PHP pathinfo被查询字符串中的url愚弄了,有什么解决方法吗?

PHP pathinfo被查询字符串中的url愚弄了,有什么解决方法吗?,php,pathinfo,Php,Pathinfo,我正在开发一个小函数,用于接收url并根据其所在位置返回相对路径 如果url在查询字符串中包含路径,pathinfo返回不正确的结果。下面的代码说明了这一点: $p = 'http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir/afile.txt'; $my_path_info = pathinfo($p); echo $p . '<br/><pre>';

我正在开发一个小函数,用于接收url并根据其所在位置返回相对路径

如果url在查询字符串中包含路径,
pathinfo
返回不正确的结果。下面的代码说明了这一点:

$p = 'http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir/afile.txt';
$my_path_info = pathinfo($p);
echo $p . '<br/><pre>';
print_r($my_path_info);
echo '</pre>';
这显然是错误的。有解决办法吗

有解决办法吗

是的,正在做;)


而对于URL,尤其是那些带有查询字符串的URL,应该更可靠地提取路径组件;然后,在上面运行
pathinfo()

谢谢!这使得
[dirname]
正确,这给我带来了麻烦,但是
[extension]
[filename]
仍然不正确。无论如何,我的问题解决了,因为我关心
[dirname]
,但我会把问题留一个小时,看看是否有人能把所有组件都做好。@Majid啊,当然,这是一个URL。parse_url()应该可以更好地实现这一点:谢谢你,佩卡。对因此,我首先使用parse_url()获得一个正确的
路径,然后在其上使用pathinfo()。您可能希望将您的解决方案合并到您的答案中,以便对以后阅读本文的人更有用,但如果您觉得不值得,我会编辑该问题并将您的方法包括在内。@Majid没问题!我添加了信息;如果您有一些示例源代码,也可以随意添加。
http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir/afile.txt

Array
(
    [dirname] => http://localhost/demos/image_editor/dir_adjuster.php?u=http://localhost/demos/some/dir
    [basename] => afile.txt
    [extension] => txt
    [filename] => afile
)
$url = urlencode('http://localhost/demos/some/dir/afile.txt');
$p = 'http://localhost/demos/image_editor/dir_adjuster.php?u='.$url;