获取访问者在PHP中访问的页面

时间:2012-12-25 16:35:29

标签: php

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

这是我的代码:

$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'

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

1 个答案:

答案 0 :(得分:2)

首先将SERVER_NAME添加到REQUEST_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等问题非常重要。