W3docs

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): string

Veja 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 (ou null), 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

php— editable, runs on the server

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?

php— editable, runs on the server

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>italic

Ambas 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 com strip_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.

Prática

Prática
Qual é a finalidade da função strip_tags() em PHP?
Qual é a finalidade da função strip_tags() em PHP?
Was this page helpful?