W3docs

addslashes()

A função addslashes() adiciona barras invertidas antes de caracteres específicos numa string, útil para incorporar texto em contextos com aspas.

A função addslashes() adiciona uma barra invertida (\) antes de determinados caracteres numa string para que possam ser incorporados com segurança em código ou dados. Ela escapa quatro caracteres: a aspa simples ('), a aspa dupla ("), a própria barra invertida (\) e o byte NUL (\0). Isso é útil quando você precisa colocar uma string dentro de outra string entre aspas sem que as aspas internas quebrem a sintaxe ao redor.

Sintaxe

addslashes(string $string): string

Aceita um único parâmetro — a string a ser escapada — e retorna uma nova string com as barras invertidas adicionadas. A string original permanece inalterada.

ParâmetroDescrição
$stringObrigatório. A string a ser escapada.

Exemplo básico

A string abaixo contém tanto aspas simples quanto aspas duplas. Ao passá-la para addslashes(), é retornada uma cópia com cada aspa escapada:

php— editable, runs on the server

A saída é:

This is a string with \'quotes\' and \"double quotes\".

Cada ' e " agora tem uma barra invertida na frente, de modo que a string pode ser inserida em um contexto entre aspas sem encerrar prematuramente a string ao redor.

Revertendo o resultado com stripslashes()

addslashes() é o inverso de stripslashes(). O que a primeira adiciona, a segunda remove, permitindo que um valor faça o ciclo completo sem perda de dados:

<?php
$original = "O'Reilly's book costs \$5.";
$escaped  = addslashes($original);
$restored = stripslashes($escaped);

echo $escaped . "\n";   // O\'Reilly\'s book costs $5.
echo $restored . "\n";  // O'Reilly's book costs $5.
var_dump($original === $restored); // bool(true)
?>

Apenas as barras invertidas inseridas pelo próprio addslashes() são removidas, portanto a string restaurada corresponde exatamente à original.

Quando usar

Use addslashes() quando precisar incorporar texto dentro de outra string entre aspas — por exemplo, ao construir um literal de string para um arquivo de exportação, um trecho de configuração ou uma saída que será posteriormente analisada por eval() (o que geralmente deve ser evitado). É um auxiliar de formatação, não uma função de escape vinculada a um destino específico.

addslashes() não é uma função de segurança

Este é o ponto mais importante a entender. addslashes() não torna uma string segura para consultas SQL ou saída HTML, e usá-la dessa forma deixa sua aplicação vulnerável:

  • Para consultas de banco de dados, use prepared statements com PDO ou mysqli, ou mysqli_real_escape_string() para a abordagem de escape legada. Ao contrário de addslashes(), mysqli_real_escape_string() considera a conexão e o conjunto de caracteres.
  • Para saída HTML, use htmlspecialchars() para neutralizar <, >, & e aspas.

addslashes() também não suporta múltiplos bytes: opera byte a byte e pode corromper ou escapar incorretamente strings em encodings como Shift-JIS ou GBK, o que é exatamente o motivo pelo qual não deve ser utilizada para segurança SQL.

Funções relacionadas

  • stripslashes() — remove as barras invertidas adicionadas por addslashes().
  • addcslashes() — permite escolher exatamente quais caracteres escapar.
  • quotemeta() — escapa metacaracteres de expressões regulares.
  • htmlspecialchars() — escapa caracteres com significado especial em HTML.

Prática

Prática
Qual é a função de addslashes() em PHP?
Qual é a função de addslashes() em PHP?
Was this page helpful?