strip_tags()
A função strip_tags() em PHP remove tags HTML e PHP de uma string, deixando apenas o conteúdo em texto simples.
Introdução
A função strip_tags() em PHP remove tags HTML, XML e PHP de uma string, deixando apenas o conteúdo em texto simples. É comumente utilizada para converter conteúdo enviado por usuários ou conteúdo rich-text em texto limpo, sem tags — por exemplo, ao gerar um resumo curto, o corpo de um e-mail em texto simples ou uma versão segura para armazenar um comentário.
Este artigo aborda a sintaxe, os parâmetros obrigatórios e opcionais, exemplos práticos, a forma de array adicionada no PHP 7.4 e os importantes avisos de segurança que você precisa entender antes de usar essa função.
Entendendo a função strip_tags()
A função strip_tags() analisa a string de entrada e exclui tudo que pareça uma tag HTML/XML (texto entre < e >) bem como as tags PHP (<?php ... ?>). O texto que está entre as tags é mantido. A sintaxe é a seguinte:
A sintaxe PHP de strip_tags()
strip_tags(string $string, array|string|null $allowed_tags = null): stringVeja o que cada parâmetro faz:
$string— a string de entrada da qual as tags serão removidas. Este é o único parâmetro obrigatório.$allowed_tags(opcional) — uma lista de tags que não devem ser removidas. Pode ser passada como uma string com nomes de tags ("<a><b>") ou, desde o PHP 7.4, como um array (["a", "b"]). Quando omitido (ounull), todas as tags são removidas.
A função retorna a string resultante com todas as tags não permitidas removidas. Ela nunca modifica a string original.
Atenção: comentários (
<!-- ... -->) e blocos<?php ... ?>são sempre removidos e não podem ser adicionados à lista de permissões.
Exemplo de Uso
Vejamos um exemplo para entender o uso da função strip_tags() em PHP:
Exemplo de strip_tags() em PHP
No exemplo acima, usamos a função strip_tags() para remover todas as tags HTML e PHP da string. A string resultante Hello WorldThis is a paragraph. é então exibida na tela usando o comando echo.
Usando o parâmetro $allowable_tags
Vejamos outro exemplo para entender como o parâmetro $allowable_tags pode ser usado com a função strip_tags():
Como usar strip_tags() em PHP?
No exemplo acima, usamos a função strip_tags() para remover tags HTML e PHP da string. Especificamos a tag <a> como tag permitida usando o parâmetro $allowed_tags. Como resultado, a função remove as tags <h1> e <p>, mas preserva seu conteúdo de texto, mantendo a tag <a> e seu conteúdo intactos. A string resultante Hello WorldThis is a paragraph.<a href='https://www.example.com'>Example link</a> é então exibida na tela usando o comando echo.
Passando as tags permitidas como um array (PHP 7.4+)
Desde o PHP 7.4, você pode passar as tags permitidas como um array em vez de uma string. Isso é mais fácil de ler e menos propenso a erros do que construir uma string no estilo "<a><b>":
<?php
$str = "<p>Hi</p><b>bold</b><i>italic</i>";
// String form (any PHP version)
echo strip_tags($str, "<p><b>"); // <p>Hi</p><b>bold</b>italic
echo "\n";
// Array form (PHP 7.4 and newer) — equivalent result
echo strip_tags($str, ["p", "b"]); // <p>Hi</p><b>bold</b>italicAmbas as chamadas mantêm as tags <p> e <b> e removem a tag <i>, imprimindo <p>Hi</p><b>bold</b>italic em cada linha.
Nota: strip_tags() não valida HTML. Ela simplesmente remove tags com base na lista de permissões fornecida, o que pode deixar marcação malformada ou tags não fechadas na saída.
Segurança: strip_tags() não é suficiente para evitar XSS
Um equívoco comum é que strip_tags() torna a entrada do usuário segura para exibição. Não é assim. A função apenas remove tags inteiras — ela não sanitiza os atributos de nenhuma tag que você permitir:
<?php
$input = '<a href="javascript:alert(1)" onclick="steal()">click me</a>';
// The <a> tag survives, attributes and all
echo strip_tags($input, "<a>");
// <a href="javascript:alert(1)" onclick="steal()">click me</a>Os atributos perigosos href e onclick passam direto. Para saída que será renderizada como HTML, use htmlspecialchars() para escapar o texto, ou um sanitizador HTML dedicado como o HTML Purifier quando você precisar permitir alguma marcação com segurança. Use strip_tags() para produzir texto simples, não para produzir HTML seguro.
Casos de uso comuns
- Pré-visualizações em texto simples: gerar um trecho sem tags de um artigo para resultados de pesquisa ou visualizações em lista.
- Corpos de e-mail em texto simples: remover HTML antes de enviar a alternativa em texto de um e-mail.
- Limpeza de entrada do usuário que nunca deve conter marcação, como um nome de exibição ou uma consulta de pesquisa.
Funções relacionadas
htmlspecialchars()— escapa<,>,&e aspas para que a marcação seja renderizada como texto em vez de ser removida.htmlentities()— converte todos os caracteres aplicáveis em entidades HTML.trim()— remove espaços em branco ao redor, frequentemente combinado comstrip_tags()para organizar o resultado.
Conclusão
A função strip_tags() é uma ferramenta simples para extrair texto simples de strings contendo marcação HTML ou PHP. Passe uma lista de permissões (como uma string, ou um array no PHP 7.4+) quando precisar manter tags específicas, e lembre-se de que ela remove apenas tags — não sanitiza atributos, portanto não é um substituto para o escape adequado de saída. Use-a para produzir texto simples, e recorra ao htmlspecialchars() ou a um sanitizador real quando precisar de HTML seguro.