PHP 8.4.2 Released!

addcslashes

(PHP 4, PHP 5, PHP 7, PHP 8)

addcslashesEscapa string com barras invertidas no estilo C

Descrição

addcslashes(string $string, string $characters): string

Retorna uma string com barras invertidas antes dos caracteres que estão listados no parâmetro characters.

Parâmetros

string

A string a ser escapada.

characters

Uma lista de caracteres a serem escapados. Se characters contiver caracteres \n, \r etc., eles serão convertidos no estilo da linguagem C, enquanto que outros caracteres não alfanuméricos com códigos ASCII menores que 32 e maiores que 126 serão convertidos para a representação octal.

Ao definir uma sequência de caracteres no argumento characters certifique-se que são conhecidos todos os caracteres que aparecem entre aqueles definidos como o início e o final do intervalo.

<?php
echo addcslashes('foo[ ]', 'A..z');
// saída: \f\o\o\[ \]
// Todas as letras maiúsculas e minúsculas serão escapadas
// ... mas também os caracteres [\]^_`
?>
Adicionamente, se o primeiro caractere em uma sequência possuir um código ASCII maior que o segundo caractere na sequência, na verdade nenhum intervalo será construído. Apenas os caracteres do início, do final e o caractere "." serão escapados. Use a função ord() para encontrar o código ASCII de um caractere.
<?php
echo addcslashes("zoo['.']", 'z..A');
// output: \zoo['\.']
?>

Cuidado ao escapar os caracteres 0, a, b, f, n, r, t e v. Eles serão convertidos para \0, \a, \b, \f, \n, \r, \t e \v, que são sequências de escape predefinidas em C. Muitas dessas sequências são também definidas em outras linguagens derivadas do C, incluindo o PHP, o que significa que pode não ser obtido o resultado desejado se a saída de addcslashes() for usada para gerar código nessas linguagens com estes caracteres definidos no parâmetro characters.

Valor Retornado

Retorna a string escapada.

Exemplos

Parâmetro characters definido para algo como "\0..\37", que escapa todos os caracteres com código entre 0 e 31 (octal \37).

Exemplo #1 Exemplo de addcslashes()

<?php
$escaped
= addcslashes($not_escaped, "\0..\37!@\177..\377");
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
7
phpcoder at cyberpimp dot pimpdomain dot com
19 years ago
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!

Example:

<?php
$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.
up
3
stein at visibone dot com
17 years ago
addcslashes() treats NUL as a string terminator:

assert("any" === addcslashes("any\0body", "-"));

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.)
up
1
natNOSPAM at noworrie dot NO_SPAM dot com
22 years ago
I have found the following to be much more appropriate code example:

<?php
$escaped
= addcslashes($not_escaped, "\0..\37!@\@\177..\377");
?>

This will protect original, innocent backslashes from stripcslashes.
To Top