W3docs

highlight_string()

Neste artigo, focamos na função PHP highlight_string(): visão geral, como funciona e exemplos de uso.

Neste artigo, vamos abordar a função PHP highlight_string(). Veremos o que ela faz, sua assinatura e valor de retorno, como capturar a saída como string, erros comuns e quando considerar uma abordagem diferente.

Introdução à função highlight_string()

highlight_string() é uma função PHP nativa que retorna ou imprime uma versão HTML com destaque de sintaxe de uma string contendo código-fonte PHP. É útil quando você deseja exibir amostras de código legíveis e coloridas em uma página web — por exemplo, em documentação, um post de blog ou um site de tutoriais — sem precisar escrever seu próprio tokenizador.

É importante entender que highlight_string() destaca apenas código PHP, e o código deve incluir a tag de abertura <?php (ou uma tag curta) para que o destaque funcione. Texto simples sem tags PHP é tratado basicamente como um único token, portanto as cores esperadas não aparecerão.

Assinatura

highlight_string(string $string, bool $return = false): string|bool
  • $string — o código PHP a ser destacado.
  • $return — se true, o HTML destacado é retornado como string; se false (o padrão), ele é exibido diretamente e a função retorna true.

A marcação gerada utiliza atributos inline style="color: …" provenientes das configurações ini highlight.* (como highlight.string e highlight.keyword).

Como usar a função highlight_string()

Na forma mais simples, chame a função e passe a string PHP que deseja destacar:

Como usar a função highlight_string()?

<?php
$string = '<?php echo "Hello, World!"; ?>';
highlight_string($string);
?>

Isso imprime HTML semelhante ao seguinte diretamente no navegador:

<pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello, World!"</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></code></pre>

No navegador, as palavras-chave, a string e as tags são renderizadas em cores diferentes. Observe que os caracteres especiais < e > são escapados para &lt; e &gt;, portanto o código destacado é exibido com segurança como texto, em vez de ser interpretado como HTML.

Retornando a saída em vez de imprimi-la

Por padrão, highlight_string() exibe o HTML destacado imediatamente. Passe true como segundo argumento quando quiser capturar o resultado — por exemplo, para armazená-lo em cache, processá-lo por um template ou envolvê-lo em marcação adicional antes de enviá-lo à página:

Exemplo de PHP highlight_string()

<?php
$string = '<?php echo "Hello, World!"; ?>';
$highlighted = highlight_string($string, true);
echo '<pre>' . $highlighted . '</pre>';
?>

Como a função já envolve sua saída em um bloco <pre><code>, normalmente não é necessário adicionar seu próprio <pre> — o wrapper acima é mostrado apenas para ilustrar que $highlighted é uma string comum que pode ser concatenada com qualquer coisa.

Problemas e limitações

  • O código deve conter tags PHP. highlight_string('echo "hi";') (sem <?php) é tratado como texto simples e aparece sem estilo. Envolva seu trecho em <?php … ?> antes.
  • A entrada não é escapada por você — a função faz isso. highlight_string() codifica o código em HTML, então nunca o processe com htmlspecialchars() antes, ou você verá entidades duplicadas como &amp;lt;.
  • Sem opções para números de linha ou classes CSS. As cores são atributos style inline obtidos das configurações ini highlight.*; não há forma nativa de adicionar números de linha ou classes personalizadas.
  • Ela chama o tokenizador real do PHP. Código sintaticamente inválido pode emitir avisos, pois a função analisa a entrada da mesma forma que o motor PHP.

Para destaque avançado — classes CSS personalizadas, números de linha ou destaque de linguagens diferentes de PHP — analise o código com token_get_all() e construa sua própria marcação, ou use uma biblioteca dedicada.

Funções relacionadas

  • highlight_file() — o mesmo destacador, mas lê o código PHP de um arquivo em vez de uma string.
  • htmlspecialchars() — escape caracteres especiais HTML quando não estiver usando highlight_string().
  • htmlentities() — converte todos os caracteres aplicáveis em entidades HTML.
  • nl2br() — insere tags <br> antes de quebras de linha ao exibir texto simples.

Conclusão

Em conclusão, a função highlight_string() é uma ferramenta nativa para gerar strings PHP formatadas com destaque de sintaxe. Ao entender como usar a função e seu parâmetro de retorno, você pode aproveitar esse recurso para exibir código legível e destacado em suas aplicações web.

Prática

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