我正在尝试为我的项目做一个 URL 解析器,这是一个非常简单的获取 URL,就像您在浏览器中输入它并将其转换为有效的 URL,一旦完成解析这样的 URL 并获取所有具有完整路径的图像.
我能够“修复”用户输入的 URL 并在需要时预先添加 http,仅删除域上的最后一个 /(` http://www.domain.com/变为http://www.domain.com但http://www.domain.com/test/保持不变)。
我遇到的问题是 dirname 正在解析某些文件夹的路径。我的代码看起来像这样:
<?php
$url = 'www.domain.com/~folder/'; //This is a variable that changes often
$url = $this->fix_url($url); //$url is now http://www.domain.com/~folder/
$url_image = 'image.png';
$parse = parse_url($url);
$dir = (isset($parse['path'])?dirname($parse['path']):'');
$ret = 'http://'.$parse['host'].$dir.'/'.$url_image;
var_dump($parse, $dir, $ret);
?>
我能够解决问题的方法是使用我用来查找的这段代码$dir
<?php
$path = (isset($parse['path'])?$parse['path']:'/');
$tmp = explode('/', $path);
if(is_array($tmp) && count($tmp) > 0){
array_pop($tmp);
}
$dir = implode('/', $tmp);
?>
但必须有更好的方法