Это продолжение по этому вопросу. Используйте PHP для получения пути / расширения файла из строки URL.
Для строки, которая является URL-адресом: http://i.imgur.com/test.png&stuff
Как получить имя файла: test.png
без параметров запроса?
Если я попробую предлагаемое решение: parse_url($url, PHP_URL_PATH)
я получаю /test.png&stuff
К сожалению, он не использует обычную строку URL-адреса, так как у нее нет? для выделения строки запроса. Вы можете попробовать использовать несколько разных функций вместе:
$path = parse_url($url, PHP_URL_PATH); $path = explode('&',$path); $filename = $path[0]; // and here is your test.png
parse_url($url, PHP_URL_PATH) I get /test.png&stuff
Это потому, что вы указываете URL-адрес, который не содержит строки запроса. Вы имели в виду /text.php?stuff
; строка запроса определяется символом ?
, а не &
; &
используется для добавления дополнительных переменных.
Чтобы извлечь строку запроса, вы хотите PHP_URL_QUERY
, а не PHP_URL_PATH
.
$x = "http://i.imgur.com/test.png?stuff"; parse_url($x, PHP_URL_QUERY); # "stuff"
основанный на ответе @ Mark Rushakoff на лучшее решение:
<?php $path = "http://i.imgur.com/test.png?asd=qwe&stuff#hash"; $vars =strrchr($path, "?"); // ?asd=qwe&stuff#hash var_dump(preg_replace('/'. preg_quote($vars, '/') . '$/', '', basename($path))); // test.png ?>