php - PHP 中的 URL 解析和简化

标签 php url parsing

我正在解析在网页上找到的链接,并且正在寻找一种方法来转换这样的 URL:

http://www.site.com/./eng/.././disclaimer/index.htm

等价且更正确

http://www.site.com/disclaimer/index.htm

主要是为了避免重复。

谢谢。

最佳答案

像这样

function simplify($path) {
   $r = array();
   foreach(explode('/', $path) as $p) {
      if($p == '..')
        array_pop($r);
      else if($p != '.' && strlen($p))
        $r[] = $p;
   }
   $r = implode('/', $r);
   if($path[0] == '/') $r = "/$r";
   return $r;
}

这就是你如何使用它

$u = parse_url($dirtyUrl);
$u['path'] = simplify($u['path']);
$clean_url = "{$u['scheme']}://{$u['host']}{$u['path']}";

关于php - PHP 中的 URL 解析和简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220960/

相关文章:

php - Laravel Query Builder 其间

WordPress URL 路由问题

ruby-on-rails - 从像 http ://localhost:3000/user/adem-balka with Rails 5 这样的友好 url 获取参数

parsing - Clojure - 解析 Elasticsearch 查询响应并提取值

PHP 解析器 - 复制下一行(?)

php - 如何从另一个高级自定义字段获取高级自定义字段选择值?

PHP 5.3.10 与 PHP 5.5.3 语法错误意外 '['

php - zend 框架表单未显示

android - 如果它安装在设备中,如何从链接启动我的应用程序

python - 在Python的另一个类ElementTree中继续解析