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— setrue, o HTML destacado é retornado como string; sefalse(o padrão), ele é exibido diretamente e a função retornatrue.
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"><?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello, World!"</span><span style="color: #007700">; </span><span style="color: #0000BB">?></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 < e >, 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 comhtmlspecialchars()antes, ou você verá entidades duplicadas como&lt;. - Sem opções para números de linha ou classes CSS. As cores são atributos
styleinline obtidos das configurações inihighlight.*; 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.