PHP 8.0.24 Released!


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

addcslashesString entre aspas com barras no estilo C


addcslashes(string $str, string $charlist): string

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



A string a receber escape.


Uma lista de caractere para receber escape. Se charlist contém caracteres \n, \r etc., eles são convertidos na mesma forma que C, quando outros caracteres não-alfanumérico com códigos ASCII menor que 32 e maior que 126 são convertido para representação octal.

Quando você define uma seqüencia de caracteres no argumento charlist certifique-se que você sabe quais os caracteres que vêm dentro do intervalo que você definiu.

echo addcslashes('foo[ ]''A..z');
// output:  \f\o\o\[ \]
// All upper and lower-case letters will be escaped
// ... but so will the [\]^_` and any tabs, line
// feeds, carriage returns, etc.
Também, se o primeiro caracter no intervalo tem um valor ASCII maior do que o segundo, nenhum intervalo será construído. Apenas os caracteres do começo e do fim serão escapados. Use a função ord() para encontrar o valor ASCII para um caracter.
echo addcslashes("zoo['.']"'z..A');
// output:  \zoo['\.']

Tenha cuidado se você escolheu adicionar escape nos caracteres 0, a, b, f, n, r, t e v. Eles serão convertidos para \0, \a, \b, \f, \n, \r, \t e \v. No PHP \0 (NULL), \r (carriage return), \n (newline), \f (form feed), \v (vertical tab) e \t (tab) são pré-definidas seqüências de escape, quando em C todos esses são pré-definidas seqüências de escape.

Valor Retornado

Retorna a string com escapes.


Versão Descrição
5.2.5 As seqüências de escape \v e \f foram adicionadas.


charlist como "\0..\37", que adicionaria escape para todos caracteres com código ASCII entre 0 e 31.

Exemplo #1 Exemplo da addcslashes()


Veja Também

add a note

User Contributed Notes 6 notes

phpcoder at cyberpimp dot pimpdomain dot com
17 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!


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

= addcslashes($not_escaped, "\0..\37!@\@\177..\377");

This will protect original, innocent backslashes from stripcslashes.
stein at visibone dot com
14 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.)
glitchmr at myopera dot com
9 years ago
If you need JS escaping function, use json_encode() instead.
vishal dot ceeng at gmail dot com
3 years ago
echo addcslashes("zoo['.']", 'z..A');

Above code will create an error as per below

Invalid '..'-range, '..'-range needs to be incrementing -
14 years ago
Be carefull with adding the \ to the list of encoded characters. When you add it at the last position it encodes all encoding slashes. I got a lot of \\\ by this mistake.

So always encode \ at first.
To Top