然后本文讲讲如何去除绝对路径中的 './'、'../'、'/..'的实现代码:
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)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
PHP实现正则表达式分组捕获操作示例这篇文章主要介绍了PHP实现正则表达式分组捕获操作,结合实例形式分析了php正则表达式获取分组捕获操作的相关实现
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)这篇文章主要介绍了phpstorm 正则匹配删除空行、注释行,需要的朋友可以参考下
PHP利用正则表达式实现手机号码中间4位用星号(*)替换显示功能为了我们的隐私,所以我们把手机号码部分数字隐藏掉,今天小编给大家带来了PHP利用正则表达式实现手机号码中间
php表单习惯用的正则表达式这篇文章通过实例代码给大家介绍了php表单习惯使用的正则表达式,非常不错,具有参考借鉴价值,需要的朋友参考
PHP实现将标点符号正则替换为空格的方法这篇文章主要介绍了PHP实现将标点符号正则替换为空格的方法,结合实例形式分析了php针对符号的正则匹配相关操作技
PHP正则匹配操作简单示例【preg_match_all应用】这篇文章主要介绍了PHP正则匹配操作,结合简单实例形式分析了php中preg_match_all针对HTML标签中P元素及img src元素内容的