处理的第一步,设置成绝对路径:
http:// ... / ../ ../
然后本文讲讲如何去除绝对路径中的 './'、'../'、'/..'的实现代码:
function url_to_absolute($relative)
{
$absolute = '';
// 去除所有的 './'
$absolute = preg_replace('/(?<!.).//','',$relative);
$count = preg_match_all('/(?<!/)/([^/]{1,}?)/..//',$absolute,$res);
// 迭代去除所有的 '/abc/../'
do
{
$absolute = preg_replace('/(?<!/)/([^/]{1,}?)/..//','/',$absolute);
$count = preg_match_all('/(?<!/)/([^/]{1,}?)/..//',$absolute,$res);
}while($count >= 1);
// 除去最后的 '/..'
$absolute = preg_replace('/(?<!/)/([^/]{1,}?)/..$/','/',$absolute);
$absolute = preg_replace('//..$/','',$absolute);
// 除去存在的 '../'
$absolute = preg_replace('/(?<!.)..//','',$absolute);
return $absolute;
}
$relative = 'http://www.mytest.org/../a/.../../b/c/../d/..';
var_dump(url_to_absolute($relative));
// 输出:string 'http://www.mytest.org/a/b/' (length=26)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。







