Php функция экранирования спецсимволов

addcslashes

Возвращает строку, экранированную обратными слешами перед символами, указанными в параметре charlist .

Список параметров

Список экранируемых символов. Если charlist содержит символы \n, \r и т.п., они будут преобразованы в стиле C, тогда как другие нецифробуквенные символы с ASCII-кодами ниже 32 и выше 126 будут преобразованы в восьмеричное представление.

Следует быть внимательным при указании диапазона символов в аргументе charlist. Проверяйте, какие символы входят в этот диапазон.

echo addcslashes ( ‘foo[ ]’ , ‘A..z’ );
// выводит: \f\o\o\[ \]// Будут экранированы заглавные и строчные английские буквы
// . а также [\]^_`
?>

Также, если ASCII-код первого символа диапазона больше, чем последнего, диапазон не будет создан. Вместо этого будут экранироваться только первый символ, последний символ и точка. Для определения ASCII-кода символов используйте функцию ord() .

Будьте внимательны при экранировании символов 0, a, b, f, n, r, t и v. Они будут преобразованы в \0, \a, \b, \f, \n, \r, \t и \v, которые являются предопределенными escape-последовательностями в языке Си. Многие из этих последовательностей также определены в других си-подобных языках, включая PHP. Это означает, что вы можете не получить ожидаемого результата, если будете использовать вывод функции addcslashes() для создания кода в этих языках с использованием этих символов в charlist .

Возвращаемые значения

Возвращает экранированную строку.

Список изменений

Версия Описание
5.2.5 Добавлены экранирующие последовательности \v и \f.

Примеры

charlist , например, «\0..\37», что проэкранирует все символы с ASCII-кодами от 0 до 31.

Пример #1 addcslashes() example

Смотрите также

  • stripcslashes() — Удаляет экранирование символов, произведенное функцией addcslashes
  • stripslashes() — Удаляет экранирование символов
  • addslashes() — Экранирует строку с помощью слешей
  • htmlspecialchars() — Преобразует специальные символы в HTML-сущности
  • quotemeta() — Экранирует специальные символы

Источник

addcslashes

Возвращает строку, экранированную обратными слешами перед символами, указанными в параметре characters .

Список параметров

Список экранируемых символов. Если characters содержит символы \n , \r и т.п., они будут преобразованы в стиле C, тогда как другие нецифробуквенные символы с ASCII-кодами ниже 32 и выше 126 будут преобразованы в восьмеричное представление.

Следует быть внимательным при указании диапазона символов в аргументе characters . Проверяйте, какие символы входят в этот диапазон.

echo addcslashes ( ‘foo[ ]’ , ‘A..z’ );
// выводит: \f\o\o\[ \]// Будут экранированы заглавные и строчные английские буквы
// . а также [\]^_`
?>

Также, если ASCII-код первого символа диапазона больше, чем последнего, диапазон не будет создан. Вместо этого будут экранироваться только первый символ, последний символ и точка. Для определения ASCII-кода символов используйте функцию ord() .

Будьте внимательны при экранировании символов 0, a, b, f, n, r, t и v. Они будут преобразованы в \0, \a, \b, \f, \n, \r, \t и \v, которые являются предопределёнными escape-последовательностями в языке Си. Многие из этих последовательностей также определены в других Си-подобных языках, включая PHP. Это означает, что вы можете не получить ожидаемого результата, если будете использовать вывод функции addcslashes() для создания кода в этих языках с использованием этих символов в characters .

Возвращаемые значения

Возвращает экранированную строку.

Примеры

characters , например, «\0..\37», что проэкранирует все символы с ASCII-кодами от 0 до 31.

Пример #1 Пример использования addcslashes()

Смотрите также

  • stripcslashes() — Удаляет экранирование символов, произведённое функцией addcslashes
  • stripslashes() — Удаляет экранирование символов
  • addslashes() — Экранирует строку с помощью слешей
  • htmlspecialchars() — Преобразует специальные символы в HTML-сущности
  • quotemeta() — Экранирует специальные символы

User Contributed Notes 6 notes

If you are using addcslashes() to encode text which is to later be decoded back to it’s original form, you MUST specify the backslash (\) character in charlist!

$originaltext = ‘This text does NOT contain \\n a new-line!’ ;
$encoded = addcslashes ( $originaltext , ‘\\’ );
$decoded = stripcslashes ( $encoded );
//$decoded now contains a copy of $originaltext with perfect integrity
echo $decoded ; //Display the sentence with it’s literal \n intact
?>

If the ‘\\’ was not specified in addcslashes(), any literal \n (or other C-style special character) sequences in $originaltext would pass through un-encoded, but then be decoded into control characters by stripcslashes() and the data would lose it’s integrity through the encode-decode transaction.

addcslashes() treats NUL as a string terminator:

unless you order it backslashified:

assert(«any\\000body» === addcslashes(«any\0body», «\0»));

(Uncertain whether this should be declared a bug or simply that addcslashes() is not binary-safe, whatever that means.)

I have found the following to be much more appropriate code example:

$escaped = addcslashes ( $not_escaped , «\0..\37!@\@\177..\377» );
?>

This will protect original, innocent backslashes from stripcslashes.

Источник

addslashes

Возвращает строку с обратным слешом перед символами, которые нужно экранировать. Экранируются одиночная кавычка (), двойная кавычка («), обратный слеш (\) и NUL ( NULL байт).

Примером использования функции addslashes() может служить добавление данных в строку, которую будет выполнять PHP. Например, если O’Reilly помещается в переменную $str, то вам необходимо экранировать $str. (т.е. eval(«echo ‘».addslashes($str).»‘;»); )

Для экранирования параметров в базе данных нужно использовать специализированные экранирующие функции СУБД (т.е. (e.g. mysqli_real_escape_string() для MySQL или pg_escape_literal() , pg_escape_string() для PostgreSQL). СУБД имеют разные спецификации для идентификаторов (т.е. имен таблиц, имен полей) и для параметров. Некоторые СУБД, такие как PostgreSQL, предоставляют отдельные функции экранирования идентификаторов ( pg_escape_identifier() ), но не все СУБД предоставляют такое API. В этом случае ориентируйтесь на документацию к вашей базе данных для выбора верного способа экранирования.

Если в вашей СУБД нет экранирующей функции и она использует символ \ для экранирования специальных символов, то вы можете использовать функцию addslashes() , но только если этот метод экранирования походит для вашей базы данных. Обратите внимание на то, что использование этой функции для экранирования параметров может привести к проблемам безопасности во многих базах данных.

Директива конфигурации magic_quotes_gpc по умолчанию имела значение on в версиях до PHP 5.4, при этом функция addslashes() автоматически применялась ко всем данным GET, POST, и COOKIE. Не используйте addslashes() для данных, обработанных magic_quotes_gpc, чтобы избежать двойного экранирования. Для проверки состояния этой директивы используется get_magic_quotes_gpc() .

Источник

Читайте также:  Httpresponse class in java
Оцените статью