Função htmlspecialchars() do PHP

Exemplo

Converte os caracteres pré-definidos "<" (menor que) e ">" (maior que) em entidades HTML:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

A saída HTML do código acima é como segue (ver código-fonte):

<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>

A saída do navegador do código acima é:

This is some <b>bold</b> text.

Executar Exemplo

Definição e uso

A função htmlspecialchars() converte os caracteres pré-definidos em entidades HTML.

Caracteres pré-definidos são:

  • & (e) torna-se &
  • " (aspas duplas) torna-se "
  • ' (aspas simples) torna-se '
  • < (menor que) torna-se <
  • > (maior que) torna-se >

Dica:Para converter entidades HTML especiais em caracteres, use htmlspecialchars_decode() Função.

Sintaxe

htmlspecialchars(string,flags,character-set,double_encode)
Parâmetros Descrição
string Obrigatório. Especifica a string a ser convertida.
flags

Opcional. Especifica como lidar com aspas, codificação inválida e qual tipo de documento usar.

Tipos de aspas disponíveis:

  • ENT_COMPAT - O padrão. Codifica apenas aspas duplas.
  • ENT_QUOTES - Codifica aspas duplas e simples.
  • ENT_NOQUOTES - Não codifica nenhuma aspas.

Codificação inválida:

  • ENT_IGNORE - Ignora a codificação inválida em vez de retornar uma string vazia. Deve ser evitado o mais possível, pois pode afetar a segurança.
  • ENT_SUBSTITUTE - Substitui a codificação inválida por um caractere especificado com o caractere substituto Unicode U+FFFD (UTF-8) ou &#FFFD; em vez de retornar uma string vazia.
  • ENT_DISALLOWED - Substitui os pontos de código inválidos do tipo de documento especificado pelo caractere substituto Unicode U+FFFD (UTF-8) ou &#FFFD;.

Flags adicionais para especificar o tipo de documento a ser usado:

  • ENT_HTML401 - Padrão. Tratar código como HTML 4.01.
  • ENT_HTML5 - Tratar código como HTML 5.
  • ENT_XML1 - Tratar código como XML 1.
  • ENT_XHTML - Tratar código como XHTML.
character-set

Opcional. Uma string que define o conjunto de caracteres a ser usado.

Valores permitidos:

  • UTF-8 - Padrão. ASCII compatível com Unicode de 8 bytes multibyte
  • ISO-8859-1 - Europa Ocidental
  • ISO-8859-15 - Europa Ocidental (adiciona símbolos de euro + letras francesas e finlandesas perdidas no ISO-8859-1)
  • cp866 - Conjunto de caracteres专用 do DOS para Cyrillic
  • cp1251 - Conjunto de caracteres专用 do Windows para Cyrillic
  • cp1252 - Conjunto de caracteres专用 do Windows para a Europa Ocidental
  • KOI8-R - Russo
  • BIG5 - Tradicional, usado principalmente em Taiwan
  • GB2312 - Simplificado, conjunto de caracteres padrão nacional
  • BIG5-HKSCS - Big5 com extensão para Hong Kong
  • Shift_JIS - Japonês
  • EUC-JP - Japonês
  • MacRoman - Conjunto de caracteres usado pelo sistema operacional Mac

Comentário:Em versões do PHP anteriores ao 5.4, os conjuntos de caracteres não reconhecidos serão ignorados e substituídos por ISO-8859-1. A partir do PHP 5.4, os conjuntos de caracteres não reconhecidos serão ignorados e substituídos por UTF-8.

double_encode

Opcional. Booleano, define se as entidades HTML existentes devem ser codificadas.

  • TRUE - Padrão. Convertirá cada entidade.
  • FALSE - Não codificará entidades HTML existentes.

Detalhes técnicos

Retorno:

Retorna a string convertida.

Se string Se contiver codificações inválidas, retornará uma string vazia, a menos que os sinais ENT_IGNORE ou ENT_SUBSTITUTE sejam definidos.

Versão do PHP: 4+
Registro de atualizações:

No PHP 5,character-set O valor padrão do parâmetro foi alterado para UTF-8.

No PHP 5.4, foram adicionados: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 e ENT_XHTML.

No PHP 5.3, foi adicionado ENT_IGNORE.

No PHP 5.2.3, foi adicionado double_encode Parâmetros.

Em PHP 4.1, foi adicionado character-set Parâmetros.

Mais Exemplos

Exemplo 1

Converter alguns caracteres pré-definidos em entidades HTML:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Apenas converter aspas duplas
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Converter aspas duplas e singlas
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Não converter nenhuma aspa
?>

A saída HTML do código acima é como segue (ver código-fonte):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<br>
Bill & 'Steve'
</body>
</html>

A saída do navegador do código acima é:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

Executar Exemplo

Exemplo 2

Converter aspas duplas em entidades HTML:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Converter aspas duplas e singlas
?>

A saída HTML do código acima é como segue (ver código-fonte):

<!DOCTYPE html>
<html>
<body>
Eu amo "PHP".
</body>
</html>

A saída do navegador do código acima é:

Eu amo "PHP".

Executar Exemplo