2

我试图获取访问者访问的页面:

这是我的代码:

$url = $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$urlcomplete = $url;
$url = explode(".com/",$url);
$urlcount = count($url);
$newurl = '';
for ($start = 1; $start < $urlcount; $start++) {
    if ($newurl != '') {
        $newurl .= '.com/'; 
    }
    $newurl .= $url[$start];    
}
$url = explode('/',$newurl);
$urlcount = explode('?',end($url));
$url[count($url) - 1] = $urlcount[0];
$urlcount = count($url);

通过使用上面的代码,所有子页面都将存储在 $url 中。

https://stackoverflow.com/questions/ask

$url[0] = 'questions'
$url[1] = 'ask'

只是想问一下,这是好方法,还是有其他更好的方法?

4

1 回答 1

2

首先添加SERVER_NAMEREQUEST_URI,然后尝试将其拆分,是没有意义的。这应该是一个更简单的解决方案:

# first, split off the query string, if any:
list( $path ) = explode( '?', $_SERVER['REQUEST_URI'], 2 );

# then just split the URL path into its components:
$url = explode( '/', ltrim( $path, '/' ) );

从路径中ltrim删除任何前导斜杠,因此$url[0]不会为空。

$url请注意,如果路径以斜杠结尾,则数组末尾可能仍有一个空元素。您可以trim通过使用而不是来摆脱它ltrim,但您可能不想这样做,因为尾部斜杠对于解析相对 URL 之类的事情很重要。

于 2012-12-25T16:45:25.073 回答