【问题标题】:Split base URL from query string and anchor fragment从查询字符串和锚片段中拆分基本 URL
【发布时间】:2013-12-25 21:48:16
【问题描述】:

假设我有这个网址:

http://test.com/directory-test/?id=4746&other=454#comments

但是,我如何使用 PHP 检索该特定页面的 URL,而不需要所有变量和 #s。比如:

http://test.com/directory-test/

我找到了这个函数,但是,它在 URL 中包含了所有内容,因此它返回一个类似于上面第一个示例的 URL,但我想要一个类似于第二个示例的 URL。

function curPageURLALL() {
 $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"];
 }
 return $pageURL;
}

【问题讨论】:

    标签: php url clean-urls


    【解决方案1】:

    使用 PHP_SELF 代替 REQUEST_URI :)

    function curPageURL() {
        $pageURL = 'http';
        if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
        $pageURL .= "://";
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["PHP_SELF"];
        } else {
            $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"];
        }
        return $pageURL;
    }
    

    Hymm,PHP_SELF 可能还会返回文件示例 index.php 所以也许这个

    function curPageURL() {
        $pageURL = 'http';
        if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
        $pageURL .= "://";
        $pageURL .= $_SERVER["SERVER_NAME"];
        if ($_SERVER["SERVER_PORT"] != "80") {
            $pageURL .= ":".$_SERVER["SERVER_PORT"];
        }
        $pos = strpos($_SERVER["REQUEST_URI"],"?");
        $pageURL .= ($pos===false)?$_SERVER["REQUEST_URI"]:substr($_SERVER["REQUEST_URI"],0,$pos);
        return $pageURL;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      相关资源
      最近更新 更多