PHP pathinfo одурачивается URL в строке запроса, любой обходной путь? - PullRequest
2 голосов
/ 10 июня 2010

Я работаю над небольшой функцией, которая берет URL и возвращает относительный путь в зависимости от того, где он находится.

Если URL содержит путь в строке запроса, pathinfo возвращает неверные результаты,Это демонстрируется кодом ниже:

<code>$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 '
';

Этот код выводит:

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
)

Что явно не так.Есть обходной путь?

1 Ответ

8 голосов
/ 10 июня 2010

Есть ли обходной путь?

Да, делает это верно ;)

$url = urlencode('http://localhost/demos/some/dir/afile.txt');
$p = 'http://localhost/demos/image_editor/dir_adjuster.php?u='.$url;

и для URL, особенно для тех, у которых есть строки запроса, parse_url() должно быть более надежным для извлечения компонента пути; После этого запустите на нем pathinfo().

...