
Всем привет. Сегодня мы познакомимся с основными функциями кодирования и декодирования url строк в php. Это прежде всего необходимо для корректной передачи данных через GET запросы. Итак, поехали!
Первая функция которую мы рассмотрим будет генерировать кодированную строку параметров url строки.
Допустим у нас есть некий массив свойств и значений которые мы хотим преобразовать в параметры адресной строки.
$url = "https://mysite.com";
$data = [
'id'=>'4343443',
'date'=>'34343434',
'token'=>'4ycr7btr65ort6t5vor6t5voc'
];
$url_string = $url.'?'.http_build_query($data);
echo $url_string;
Для этого мы используем функцию http_build_query().
Данная функция принимает аргумент в виде ассоциативного массива и преобразует его в кодированную url строку в виде параметров url. Причем данная функция может принимать и преобразовывать многоуровневые ассоциативные массивы.
$url = "https://mysite.com";
$data = [
'id'=>'4343443',
'date'=>'34343434',
'token'=>'4ycr7btr65ort6t5vor6t5voc',
'user'=>[
'name' => 'Andrey',
'age' => 24
]
];
$url_string = $url.'?'.http_build_query($data);
echo $url_string;
Отлично, идем дальше! Следующие функции которые мы рассмотрим кодируют и декодируют строку согласно RFC 3986.
$url = "https://mysite.com/test/?id=23";
echo rawurlencode($url);
Функция rawurlencode() кодирует строку.
$url = "https%3A%2F%2Fmysite.com%2Ftest%2F%3Fid%3D23";
echo rawurldecode($url);
А функция rawurldecode() декодирует строку, то есть преобразует ее обратно.
Следующие функции urlencode() и urldecode() практически ничем не отличаются от предыдущих за исключением кодирования символа пробела. Символ пробел при кодировании данными функциями преобразовывается в символ +.
$url = "https://mysite.com/test/?id=23&text=Какой то текст";
echo urlencode($url);
Функция urlencode() кодирует строку. Обратите внимание что все пробелы в тексте были преобразованы в знак +. Для сравнения вы можете попробовать кодировать данную строку с помощью функции urlencode().
$url = "https%3A%2F%2Fmysite.com%2Ftest%2F%3Fid%3D23%26text%3D%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9+%D1%82%D0%BE+%D1%82%D0%B5%D0%BA%D1%81%D1%82";
echo urldecode($url);
Обратная функция urldecode() - декодирует url строку закодированную функцией urlencode().
Вот в принципе и все что я хотел вам рассказать про кодирование и декодирование url строк в php. Для корректной передачи данных через get запросы не забывайте использовать данные функции для формирования url строки. Я к примеру, частенько пользуюсь ими при формировании запросов API. Это повышает вероятность что данные будут корректно переданы через адресную строку и вы получите положительный результат.
На этом данная статья подошла к концу. Если у вас остались вопросы пишите их в комментариях или группе
вк.Я с вами прощаюсь. Желаю успехов и удачи! Пока.