【问题标题】:Isolate part of url with php and then print it in html element用php隔离部分url,然后在html元素中打印
【发布时间】:2011-09-23 21:17:49
【问题描述】:

我正在 WordPress 中构建一个画廊,我正在尝试抓取我的 URL 的特定部分以回显到 div 的 id 中。

这是我的网址:

http://www.url.com/gallery/truck-gallery-1

我想隔离画廊的 ID,它始终是一个数字(在本例中为 1)。然后我想有一种方法可以在某个地方打印它,也许是以函数的形式。

【问题讨论】:

    标签: php wordpress url isolation


    【解决方案1】:

    使用 $_SERVER['REQUEST_URI'] 变量获取路径(请注意,这与返回类似 http://www.yoursite.com 的主机变量不同。

    然后将其分解成一个字符串并返回最后一个字符。

    $path = $_SERVER['REQUEST_URI'];
    $ID   = $path[strlen($path)-1];
    

    当然,您可以进行其他类型的字符串操作来获取字符串的最后一个字符。但这行得通。

    【讨论】:

    • 请改用$_SERVER["REQUEST_URI"]。使用 WordPress 时,$_SERVER['SCRIPT_NAME'] 只会给你index.php
    • 感谢克里斯蒂安,您的脚本运行良好,除了 arvin 是对的,最好将 $_SERVER["REQUEST_URI"] 用于 wordpress。再次感谢大家
    • 谢谢大家,但我也需要它来显示更大的数字,因为画廊正在使用这些 ID 来确定他们将在哪些页面上显示哪些信息。还有很多我正在使用的画廊。
    【解决方案2】:

    您最好使用$_SERVER['REQUEST_URI']。由于它是 URL 中的最后一个字符串,因此您可以使用以下函数:

    function getIdFromUrl($url) {
        return str_replace('/', '', array_pop(explode('-', $url)));
    }
    

    @Kristian 的解决方案只会返回 0-9 之间的数字,但此函数将返回任意长度的 id,只要您的 ID 用 - 符号和最后一个元素分隔即可。

    所以,当你打电话时

     echo getIdFromUrl($_SERVER['REQUEST_URI']);
    

    它会回显,在你的情况下,1

    【讨论】:

    • 谢谢Sascha,我也试过了,但我在这里遇到的问题是我希望它只显示数字,现在它还显示url末尾的正斜杠,所以看起来像这样 (1/)
    【解决方案3】:

    如果 ID 并不总是相同的位数(如果您有任何大于 9 的 ID),那么您将需要类似 preg_match() 或使用字符串函数来修剪最后一个“-”之前的所有内容。 “ 特点。我可能会这样做:

    <?php
    $parts = parse_url($_SERVER['REQUEST_URI']);
    if (preg_match("/truck-gallery-(\d+)/", $parts['path'], $match)) {
        $id = $match[1];
    } else {
        // no ID found!  Error handling or recovery here.
    }
    ?>
    

    【讨论】:

    • 谢谢柯蒂斯!此代码有效,我遇到的唯一问题是我无法回应它。我试图回显 $id 但由于某种原因,当我在 wordpress 短代码中使用它时它不起作用。关于我应该做什么的任何建议?
    • 很抱歉,我不熟悉 Wordpress 简码。也许Wordpress Shortcode API codex 会给你一些关于如何将我的代码合并到函数中的指示。
    • 它对我来说也很新。我的编程技能非常低,但我在想如果我可以将它包装成一个函数,我可能可以使用 [nggallery - ('.$id.')] 之类的东西来调用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多