Всем привет в этой небольшой статье мы с вами познакомимся с функциями parse_url() и parse_str() которые позволяют разбивать url строку на составляющие элементы. Под составляющими элементами я понимаю (протокол, хост, порт, параметры и т.п)
Допустим у нас есть следующая url строка:
$url_str = "https://webfanat.com:8083/article_id?id=136#136";
И мы хотим разбить ее на фрагменты. Для этого достаточно воспользоваться функцией parse_url().
var_dump(parse_url($url_str));
В данную функцию мы передаем нашу url строку и на выходе получаем ассоциативный массив содержащий следующие пары свойств и значений.
scheme => https
host => webfanat.com
port => 8083
path=> /article_id
query=> id=136
fragment=>136
Как видите вся наша url строка была разбита на составные ее части. Теперь нам достаточно просто обратится к любому ключу массива для получения его содержимого. К примеру мы хотим получить номер порта.
var_dump(parse_url($url_str)['port']);
В результате нам вернется номер порта. Если нам требуется получить одно или несколько значений фрагментов url строки мы можем в функцию parse_url() передать второй аргумент в виде надстройки.
Пример, получение параметров адресной строки.
var_dump(parse_url($url_str, PHP_URL_QUERY));
Как видите здесь для получения параметров адресной строки мы воспользовались константой PHP_URL_QUERY. Остальные фрагменты url строки мы можем получать точно также по аналогии(PHP_URL_SCHEME - scheme, PHP_URL_PORT - port и т.п.)
Давайте рассмотрим теперь функцию parse_str(). Данная функция позволяет обрабатывать строку параметров url.
$url_str = "https://webfanat.com:8083/article_id?id=136&new=1#136";
$query = parse_url($url_str, PHP_URL_QUERY);
parse_str($query, $output);
var_dump($output);
В саму функцию мы передаем строку параметров url и переменную($output) в которую будет возвращен результат. Отмечу что наличие второго аргумента обязательно!
В итоге у нас в переменную $output записывается ассоциативный массив содержащий пары свойств и значений параметров url строки.
var_dump($output['id']);// значение параметра id
var_dump($output['new']);// значение параметра new
В общем функцию parse_str() мы можем применять к любым строкам такого формата(?свойство=значение&свойство=значение)
На этом данная статья подошла к концу. Не забывайте оставлять комментарии.
Удачи!