我试图访问访问者访问的页面:
这是我的代码:
$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'
只想问,这是好方法,还是有其他方法更好?
答案 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等问题非常重要。