如何使用PHP从URL中剥离GET属性

时间:2010-03-31 18:32:36

标签: php

我有以下功能获取当前页面网址:

<?php

    // get current page url
    function currentPageUrl() {

        $pageURL = 'http';

        if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}

        $pageURL .= "://";

        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
        }
        else {
            $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        }


        echo $pageURL;

    }

?>

打印哪些:

http://localhost/gallery.php?id=23&type=main

我想删除网址中的“&amp; type = main”。所以在回显$ pageURL之前,我添加以下行:

$pageUrl = preg_replace("&type=main", "", $pageURL);

但它仍会返回包含type = main的完整网址。我怎样才能从网址中删除它?

5 个答案:

答案 0 :(得分:3)

另一种解决方案可能是:

  • 使用parse_url$_SERVER['QUERY_STRING']将参数列表提取为字符串
  • 使用 parse_str 将查询字符串转换为包含每个参数及其值的数组 - 按参数名称索引。
  • 在该阵列上做一些魔术:
    • 做你需要的东西来过滤它
    • 例如,unset($array['type']);可能有所帮助; - )
    • 如果需要,请向该阵列添加更多参数
  • 然后,使用 http_build_query 重新构建查询字符串。


比字符串操作更复杂 - 当然 - 但更可靠,我会说; - )

答案 1 :(得分:1)

您可以将网址投入parse_url。它将返回一个数组,您可以根据需要重建该数组。

答案 2 :(得分:0)

试试这个:

$pageUrl = str_replace('&type=main', '', $pageURL);

答案 3 :(得分:0)

您是否尝试过任何其他$ _SERVER变量?
有很多,其中一些已经包含你需要的一切,没有任何替换

phpinfo(32);

将显示所有

答案 4 :(得分:0)

PHP标识符区分大小写。你可能想把它分配给同一个变量。

$pageURL = preg_replace("&type=main", "", $pageURL);

要么是这样,要么您需要更改代码的残余部分以使用$pageUrl而不是$pageURL