PHP利用正则表达式将相对路径转成绝对路径的方法示例

2019-05-01 23:49:51王冬梅

处理的第一步,设置成绝对路径:

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)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。

相关文章 大家在看