Функция urlencode_deep()
в WordPress используется для рекурсивного кодирования значений массива, объекта или строки с помощью urlencode()
. Она автоматически проходит по всем уровням вложенности и кодирует все строки, что особенно полезно при работе с параметрами URL, так как кодирование необходимо для корректного представления специальных символов.
urlencode_deep( mixed $value ): mixed
Параметры
$value
Тип:mixed
Обязательный параметр.
Может быть массивом, объектом или строкой, содержащей значения, которые нужно закодировать.
Возвращаемое значение
mixed
Возвращает закодированное значение с учетом типа переданных данных.
Пример 1: Кодирование строки
Кодирует простую строку, содержащую пробел, чтобы ее можно было использовать в URL.
echo urlencode_deep('пример строки');
// Вывод: пример+строки
Пример 2: Кодирование массива
Рассмотрим массив, где значения содержат пробелы и специальные символы. Функция urlencode_deep()
обработает каждое значение массива.
$data = urlencode_deep(array(
'ключ1' => 'значение с пробелом',
'ключ2' => 'значение_с_символами',
));
// Вывод:
Array
(
[ключ1] => значение+с+пробелом
[ключ2] => значение_с_символами
)
Пример 3: Использование в URL с параметрами
urlencode_deep()
часто применяется в сочетании с функцией add_query_arg()
для динамического добавления параметров к URL.
echo add_query_arg('param', urlencode_deep('значение с пробелом'), 'https://пример.ком/');
// Вывод: https://пример.ком/?param=значение+с+пробелом
Пример 4: Кодирование вложенного массива
Если данные содержат вложенные массивы, функция urlencode_deep()
обработает каждый элемент на всех уровнях вложенности.
$arr = array(
'url1' => 'https://сайт.ком/пример',
'url2' => 'https://сайт.ком/пример2',
'url3' => array(
'suburl1' => 'https://сайт.ком/подпример'
)
);
$result = urlencode_deep($arr);
print_r($result);
/* Вывод:
Array
(
[url1] => https%3A%2F%2Fсайт.ком%2Fпример
[url2] => https%3A%2F%2Fсайт.ком%2Fпример2
[url3] => Array
(
[suburl1] => https%3A%2F%2Fсайт.ком%2Fподпример
)
)
*/
Пример 5: Прямое использование вместо urlencode()
Можно использовать urlencode_deep()
как замену urlencode()
при работе со строками.
echo urlencode_deep('https://сайт.ком/пример');
// Вывод: https%3A%2F%2Fсайт.ком%2Fпример
Функция urlencode_deep()
реализована на основе map_deep()
, что позволяет ей быстро обрабатывать значения даже при многократном вызове.
Заключение
Функция urlencode_deep()
— удобный инструмент WordPress для автоматического рекурсивного кодирования данных для URL, который помогает избежать ошибок при передаче параметров с пробелами и специальными символами.