Função htmlspecialchars

htmlspecialchars ( $string , $quote_style, $charset ) - converte alguns caracteres pré-definidos para entidades HTML.
É o oposto da função htmlspecialchars-decode

Alguns caracteres têm significados especiais em HTML como por exemplo o sinal de maior e menor > <.
Use a função htmlspecialchars sempre que precisar visualizar esses caracteres no conteúdo da página.

Os caracteres pré-definidos são:
'&' (ampersand) é convertido para '&amp;'
'"' (aspas dupla) é convertido para '&quot;' quando ENT_NOQUOTES não estiver definida.
''' (aspas simples) é convertido para '&#039;' apenas quando ENT_QUOTES estiver definida.
'<' (menor que) é convertido para '&lt;'
'>' (maior que) é convertido para '&gt;'

Nota: esta função não converte nada além do que foi listado acima. Para converter todos os caracteres aplicáveis em entidades html, veja htmlentities().

Parâmetro Descrição
$string Obrigatório. Especifica a string para converter
$quote_style Opcional. Especifica como codificar aspas simples e duplas.
  • ENT_COMPAT - Padrão. Codifica apenas aspas duplas
  • ENT_QUOTES - Codifica aspas duplas e simples
  • ENT_NOQUOTES - Não codificar qualquer aspas
$charset - conjunto de caracteres Opcional. Uma seqüência que especifica qual conjunto de caracteres usar.

Os valores permitidos são:

  • ISO-8859-1 - Padrão. Europa Ocidental
  • ISO-8859-15 - Europa Ocidental (adiciona o sinal de Euro + letras francesas e finlandês desaparecidos em ISO-8859-1)
  • UTF-8 - ASCII compatível com multi-byte Unicode de 8 bits
  • CP866 - DOS específica cirílico charset
  • cp1251 - Windows específico cirílico charset
  • cp1252 - Windows charset específico para a Europa Ocidental
  • KOI8-R - Russo
  • BIG5 - Chinês Tradicional, usado principalmente em Taiwan
  • GB2312 - Chinês Simplificado, conjunto de caracteres padrão nacional
  • BIG5-HKSCS - Big5 com extenções de Hong Kong
  • Shift_JIS - Japonês
  • EUC-JP - Japonês

 

Nota:$charset se não for reconhecido será ignorada e substituída pela ISO-8859-1.



Exemplo: para que o navegador não interprete a linha abaixo como sendo um comando e a exiba
<a href='test.htm'>isto não é um comando</a>
da forma como está sendo apresentado:
<?php
$new = htmlspecialchars("<a href='test.htm'>isto não é um comando</a>", ENT_QUOTES);
echo $new;
?>
Resultado:


Sem a aplicação da função teriamos:
<?php
$new = "<a href='test.htm'>isto não é um comando</a>";
echo $new;
?>
Resultado:
isto não é um comando