Intereting Posts
Функция вызова PHP SOAP-клиента с параметрами Как создать раскрывающийся список времени? ImageMagick работает в командной строке, но когда exec () в php возвращает 5 с «несовместимой версией библиотеки», Автогенерированное изображение гиперссылки в PHP PHP json_encode возвращает значение null из символа Unicode Как я могу найти все пробелы, исключая те, которые заключены между кавычками? Валидаторы Zend и сообщения об ошибках: addValidator и addErrorMessage Не удается открыть удаленный файл XML с помощью функции fopen (). Какое все разрешение нужно установить на сервере или какие параметры мне нужно установить в функции fopen (). PHP, Неустранимая ошибка: вызов неопределенного метода, почему? Добавление дней к дате с помощью PHP Где найти php_printer.dll? Fetch Api не может получить сеанс с сервера PHP переменная php в javascript Новый язык поверх PHP? Веб-приложение PHP, когда нужно использовать try / catch

PHP – Как получить имя файла из строки url

Это продолжение по этому вопросу. Используйте 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 ?> 
  1. Регулярное выражение для сбора всего после последнего /
  2. Как получить имя файла из полного пути с помощью PHP?