Stripslashes: примеры (PHP)
Использование stripslashes в PHP для обработки строк
Раздел: Работа со строками
stripslashes(string string): stringОсновные сведения о функции stripslashes
Функция stripslashes в PHP предназначена для удаления экранирующих слешей из строк. Чаще всего она применяется для обработки данных, которые были экранированы функцией addslashes или при автоматическом экранировании, включенном директивой magic_quotes_gpc (удалена в PHP 5.4.0).
Синтаксис и параметры
Синтаксис функции:stripslashes(string $string, string $characters = "\\"): string
- $string (обязательный) - строка, из которой нужно удалить экранирующие слеши
- $characters (опциональный, добавлен в PHP 8.3.0) - список символов, для которых нужно удалить экранирование
Базовые примеры использования
Удаление стандартных экранирующих слешей
// Пример 1: Базовое использование
$str = "Это \"тестовая\" строка\\слэш";
echo stripslashes($str);Это "тестовая" строка\слэш
Использование с указанием символов (PHP 8.3+)
// Пример 2: Указание конкретных символов для обработки
$str = "Экранированные \"кавычки\" и \'апострофы\'";
echo stripslashes($str, "\\'\"");Экранированные "кавычки" и 'апострофы'
// Пример 3: Обработка только обратных слешей
$str = "Путь: C:\\Windows\\System\\";
echo stripslashes($str, "\\\\");Путь: C:\Windows\System\
Похожие функции в PHP
- stripcslashes - удаляет экранирование в стиле языка C, обрабатывает специальные последовательности типа \n, \r, \t
- htmlspecialchars_decode - преобразует HTML-сущности обратно в символы
- urldecode - декодирует URL-кодированную строку
- json_decode - декодирует JSON строку, автоматически обрабатывая экранирование
Критерии выбора функции
Функцию stripslashes применяют для обработки данных, экранированных addslashes. Для обработки JSON данных предпочтительнее json_decode. При работе с HTML используйте htmlspecialchars_decode.
Распространенные ошибки
Двойное удаление слешей
// Ошибка: многократное применение функции
$str = "Текст с \"кавычками\"";
$result = stripslashes(stripslashes($str));
echo $result;Текст с "кавычками" // Второй вызов удаляет сами кавычки
Неправильная обработка данных из БД
// Ошибка: использование stripslashes для PDO-экранирования
$pdo = new PDO(...);
$input = "O'Reilly";
$stored = $pdo->quote($input); // Экранирование через PDO
$result = stripslashes($stored); // Неправильно!
echo $result;Игнорирование контекста экранирования
// Неправильное применение к уже чистым данным
$clean = "Обычная строка";
$result = stripslashes($clean); // Бессмысленная операция
echo $result === $clean ? 'Строка не изменилась' : 'Ошибка';Строка не изменилась
Изменения в версиях PHP
- PHP 8.3.0 - добавлен необязательный параметр
$characters, позволяющий указать, для каких символов удалять экранирование - PHP 7.0.0 - функция стала строго типизированной, при передаче нестрокового аргумента выдается предупреждение
- PHP 5.4.0 - удалена директива magic_quotes_gpc, что уменьшило необходимость в использовании функции
Расширенные примеры использования
Обработка многомерных массивов
Пример php
// Рекурсивная обработка массива
function stripslashes_deep($value) {
return is_array($value)
? array_map('stripslashes_deep', $value)
: stripslashes($value);
}
$data = [
'text' => "Экранированная \"строка\"",
'nested' => ['item' => "Еще \'одна\' строка"]
];
print_r(stripslashes_deep($data));Array
(
[text] => Экранированная "строка"
[nested] => Array
(
[item] => Еще 'одна' строка
)
)Комбинирование с другими функциями
Пример php
// Обработка данных формы после экранирования
$input = addslashes("User's \"special\" data ");
$step1 = stripslashes($input);
$step2 = htmlspecialchars($step1, ENT_QUOTES);
echo $step2;User's "special" data <script>alert('xss')</script>Использование с параметром characters (PHP 8.3+)
Пример php
// Селективное удаление экранирования
$str = "Кавычки: \"двойные\", апострофы: \'одинарные\', слеши: \\\\";
// Удаляем экранирование только для кавычек
$result1 = stripslashes($str, "\"");
echo $result1 . "\n";
// Удаляем экранирование для нескольких типов символов
$result2 = stripslashes($str, "\"'\\\\");
echo $result2;Кавычки: "двойные", апострофы: \'одинарные\', слеши: \\\\ Кавычки: "двойные", апострофы: 'одинарные', слеши: \\
Обработка данных из legacy-систем
Пример php
// Эмуляция обработки данных с magic_quotes_gpc
function fix_magic_quotes($data) {
if (get_magic_quotes_gpc()) {
return stripslashes($data);
}
return $data;
}
// Современная реализация для совместимости
$legacy_data = "Данные из старой системы: O\'Brien \"test\"";
$processed = stripslashes($legacy_data);
echo $processed;Данные из старой системы: O'Brien "test"
Аналоги в других языках программирования
Stripslashes в Javascript
// Удаление экранирующих слешей в JavaScript
let str = "Экранированная \\"строка\"";
let result = str.replace(/\\(["'\\])/g, '$1');
console.log(result);Экранированная "строка"
Stripslashes в Python
# Удаление экранирующих слешей в Python
import re
str = "Экранированная \\"строка\""
result = re.sub(r'\\(["\'\\])', r'\1', str)
print(result)
# Альтернатива через decode
str2 = "Экранированная \\"строка\"".encode().decode('unicode_escape')
print(str2)Экранированная "строка" Экранированная "строка"
Stripslashes в MySQL
-- Функция UNESCAPE в MySQL (нестандартная)
-- Обычно используют REPLACE
SELECT REPLACE(REPLACE('Экранированная \"строка\"', '\\"', '"'), '\\\\', '\\');Экранированная "строка"
PHP stripslashes function comments
En
Stripslashes Un-quotes a quoted string