Функция wp_unslash()
в WordPress удаляет обратные слэши, добавленные для экранирования символов в строках или строковых элементах массива. Это особенно полезно при работе с пользовательскими данными, получаемыми через глобальные массивы $_POST
, $_GET
, $_COOKIE
, которые автоматически экранируются WordPress.
Эта функция применяется, чтобы предотвратить ошибочные символы при обработке данных. Например, для работы с API WordPress или записи данных в базу через $wpdb->insert()
, которые ожидают неэкранированные данные.
wp_unslash( string|array $value ): string|array
Параметры
$value
(строка | массив) — Обязательный параметр. Переданная строка или массив, из которых необходимо удалить экранирующие слэши.
Возвращаемое значение
Функция возвращает строку или массив в исходном виде, без экранирующих символов.
Пример 1: Удаление слэшей из строки
При обработке пользовательских данных WordPress автоматически добавляет экранирующие слэши, например, при получении данных из формы:
$val = 'Магазин "Книжная Полка" предлагает скидки';
$val_slashed = addslashes($val); // "Магазин \"Книжная Полка\" предлагает скидки"
$val_unslashed = wp_unslash($val_slashed);
echo $val_unslashed;
// Результат: Магазин "Книжная Полка" предлагает скидки
Пример 2: Удаление слэшей из массива
Функция wp_unslash()
также поддерживает массивы, удаляя слэши рекурсивно из всех вложенных элементов. Это удобно при обработке сложных структур данных, поступающих из пользовательского ввода:
$data = array(
'Товары' => array(
'Книга' => 'Путешествие к центру Земли',
'Автор' => 'Жюль Верн',
'Описание' => 'Захватывающая история, которая начинается с фразы: "Что вы думаете о приключениях?"'
),
'Отзывы' => 'Интересная и познавательная книга'
);
$data_slashed = wp_slash($data);
$data_unslashed = wp_unslash($data_slashed);
print_r($data_unslashed);
/*
Результат:
array(
'Товары' => array(
'Книга' => 'Путешествие к центру Земли',
'Автор' => 'Жюль Верн',
'Описание' => 'Захватывающая история, которая начинается с фразы: "Что вы думаете о приключениях?"'
),
'Отзывы' => 'Интересная и познавательная книга'
);
*/
Пример 3: Использование в глобальных массивах $_POST
и $_COOKIE
Для работы с массивом $_POST
при отправке данных из формы WordPress применяет слэши по умолчанию. wp_unslash()
позволяет убрать их:
if ( isset( $_POST['comment'] ) ) {
$comment = wp_unslash( $_POST['comment'] );
echo $comment;
}
// Результат: текст комментария без лишних экранирующих символов
Также эта функция полезна при работе с массивом $_COOKIE
:
$recent_items = isset( $_COOKIE['recent_items'] ) ? explode( '|', wp_unslash( $_COOKIE['recent_items'] ) ) : array();
$recent_items = array_map( 'intval', $recent_items );
print_r($recent_items);
// Результат: массив чисел из $_COOKIE['recent_items'], очищенных от экранирующих символов
Зачем использовать wp_unslash()
?
При разработке на WordPress важно помнить, что данные из глобальных массивов $_POST
, $_GET
, $_COOKIE
экранируются по умолчанию. Использование wp_unslash()
позволяет избежать ошибок и исключить лишние символы перед отправкой данных в базу данных или передачей в API WordPress.
Заключение
Функция wp_unslash()
— это простой и эффективный способ избежать проблем с экранированием данных в WordPress.