Stripcslashes: примеры (PHP)

Использование stripcslashes в PHP: полное руководство
Раздел: Работа со строками
stripcslashes(string string): string
Функция stripcslashes в PHP

Функция 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
Похожие функции в PHP

Функция 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

В PHP 8 функция stripcslashes не претерпела значительных изменений в поведении. Основное отличие связано с общей эволюцией языка:

  • Улучшена производительность обработки строк
  • Более строгая типизация параметров
  • Функция сохраняет обратную совместимость с предыдущими версиями PHP
Расширенные примеры
Обработка массива строк
Пример php
<?php
$data = [
    "Первая\\nстрока",
    "Вторая\\tстрока",
    "Третья \\"строка\\""
];

$result = array_map('stripcslashes', $data);
print_r($result);
?>
Array
(
    [0] => Первая
строка
    [1] => Вторая	строка
    [2] => Третья "строка"
)
Комбинация с addcslashes
Пример php
<?php
$original = "Строка с 'кавычками' и \\nпереводом";
$escaped = addcslashes($original, "'\\n");
echo "Экранированная: " . $escaped . "\\n";
echo "Восстановленная: " . stripcslashes($escaped);
?>
Экранированная: Строка с \'кавычками\' и \\nпереводом
Восстановленная: Строка с 'кавычками' и \nпереводом
Обработка восьмеричных кодов
Пример php
<?php
$str = "Символ: \\101"; // Восьмеричный код 'A'
echo stripcslashes($str);
?>
Символ: A
Работа с пользовательским вводом
Пример php
<?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

PHP stripcslashes function comments

En
Stripcslashes Un-quote string quoted with addcslashes