Stripcslashes: примеры (PHP)
stripcslashes(string string): stringФункция stripcslashes выполняет обратное преобразование строки, которая была экранирована с помощью addcslashes. Она удаляет обратные слеши, предшествующие указанным символам, восстанавливая исходное значение строки.
Использование функции актуально при обработке данных, которые были экранированы в стиле языка C, включая специальные символы и символы с шестнадцатеричными или восьмеричными кодами.
Функция принимает один обязательный параметр:
- string – строка, из которой необходимо удалить экранирование в стиле C
Возвращаемое значение – строка с удаленными обратными слешами.
<?php
$str = "Это \"пример\" строки.";
echo stripcslashes($str);
?>Это "пример" строки.
<?php
$str = "Строка\nс\tразрывами";
echo stripcslashes($str);
?>Строка с разрывами
<?php
$str = "\x48\x65\x6c\x6c\x6f";
echo stripcslashes($str);
?>Hello
Функция stripslashes удаляет экранирующие слеши, добавленные функцией addslashes. В отличие от stripcslashes, она обрабатывает только ограниченный набор символов: одинарные и двойные кавычки, обратный слеш и нулевой символ.
Функцию stripslashes предпочтительнее применять для удаления экранирования, добавленного автоматически в настройках PHP (magic_quotes). Функция stripcslashes используется при работе с экранированием в стиле C, включая специальные символы и коды.
<?php
$str = "\\\\x41"; // Двойное экранирование
echo stripcslashes($str);
?>\x41
Функция обрабатывает только первый уровень экранирования.
<?php
$str = "\\xG5"; // Некорректный hex-код
echo stripcslashes($str);
?>\xG5
Некорректные шестнадцатеричные последовательности остаются без изменений.
<?php
$str = "";
var_dump(stripcslashes($str));
?>string(0) ""
В PHP 8 функция stripcslashes не претерпела значительных изменений в поведении. Основное отличие связано с общей эволюцией языка:
- Улучшена производительность обработки строк
- Более строгая типизация параметров
- Функция сохраняет обратную совместимость с предыдущими версиями PHP
<?php
$data = [
"Первая\\nстрока",
"Вторая\\tстрока",
"Третья \\"строка\\""
];
$result = array_map('stripcslashes', $data);
print_r($result);
?>Array
(
[0] => Первая
строка
[1] => Вторая строка
[2] => Третья "строка"
)<?php
$original = "Строка с 'кавычками' и \\nпереводом";
$escaped = addcslashes($original, "'\\n");
echo "Экранированная: " . $escaped . "\\n";
echo "Восстановленная: " . stripcslashes($escaped);
?>Экранированная: Строка с \'кавычками\' и \\nпереводом Восстановленная: Строка с 'кавычками' и \nпереводом
<?php
$str = "Символ: \\101"; // Восьмеричный код 'A'
echo stripcslashes($str);
?>Символ: A
<?php
// Имитация данных, экранированных в C-стиле
$user_input = "Текст с \\"кавычками\\" и \\nновой строкой";
$processed = stripcslashes(htmlspecialchars($user_input, ENT_QUOTES));
echo $processed;
?>Текст с "кавычками" и новой строкой
Stripcslashes в Python
В Python используется метод decode для строк в байтовом представлении или модуль codecs:
import codecs
str = "Hello\x20World"
result = codecs.escape_decode(str)[0].decode('utf-8')
print(result)Hello World
Stripcslashes в Javascript
JavaScript не имеет прямой аналогии, но можно использовать замену через регулярные выражения:
let str = "Hello\\x20World";
let result = str.replace(/\\x([0-9A-Fa-f]{2})/g,
(match, p1) => String.fromCharCode(parseInt(p1, 16)));
console.log(result);Hello World
Stripcslashes в MySQL
В MySQL используется функция UNESCAPE для определенных последовательностей:
SELECT UNESCAPE('Hello\\x20World') AS result;Hello World