Strings são um dos tipos de dados mais utilizados em PHP, representando sequências de caracteres. Nesta aula, exploraremos as principais formas de declarar e manipular strings, desde a escolha entre aspas simples e duplas até funções poderosas que facilitam o processamento de texto.

Dominar strings é essencial para qualquer desenvolvedor PHP, pois elas estão presentes em formulários, bancos de dados, APIs e saídas HTML. Vamos mergulhar nos detalhes para que você possa escrever código mais eficiente e seguro.

Aspas simples vs duplas

Em PHP, strings podem ser delimitadas por aspas simples (') ou duplas ("). A principal diferença está na forma como o PHP interpreta o conteúdo: aspas duplas interpolam variáveis e interpretam sequências de escape especiais, enquanto aspas simples tratam quase tudo literalmente (exceção: \' e \\).

Por exemplo, ao usar aspas duplas, o PHP substitui variáveis dentro da string pelo seu valor. Já com aspas simples, o nome da variável é exibido como texto. Isso impacta desempenho e segurança: aspas simples são ligeiramente mais rápidas por não exigirem análise de interpolação, mas aspas duplas oferecem mais flexibilidade.

$nome = "Maria";
echo "Olá, $nome!"; // Saída: Olá, Maria!
echo 'Olá, $nome!'; // Saída: Olá, $nome!

Sequências de escape como \n (nova linha) e \t (tabulação) funcionam apenas em strings com aspas duplas. Em aspas simples, a sequência \n é exibida como literal. Use aspas simples quando não precisar de interpolação ou escapes especiais para evitar processamento desnecessário.

Interpolação

A interpolação de variáveis em strings com aspas duplas permite incorporar variáveis diretamente no texto. O PHP reconhece variáveis simples ($var) e expressões mais complexas com chaves ({}), como {$obj->propriedade} ou {$array['chave']}.

As chaves são úteis para desambiguar o nome da variável de caracteres adjacentes. Por exemplo, "$nomes" tentaria interpolar uma variável chamada $nomes, enquanto "{$nome}s" interpola $nome e adiciona o "s" literal.

$cidade = "São Paulo";
echo "A cidade de {$cidade} é linda!"; // A cidade de São Paulo é linda!
echo "$cidade é linda!"; // Funciona, mas cuidado com caracteres seguintes

A interpolação também funciona com índices de array e propriedades de objetos, desde que usados com chaves. Evite interpolar expressões complexas; prefira concatenar para maior clareza.

Heredoc e Nowdoc

Heredoc e Nowdoc são sintaxes para declarar strings multilinha sem precisar escapar aspas. Um heredoc é iniciado com <<<IDENTIFICADOR e terminado com IDENTIFICADOR; em uma linha separada. O conteúdo entre eles é interpretado como uma string com aspas duplas (interpolação e escapes). Já o nowdoc usa o identificador entre aspas simples (<<<'IDENTIFICADOR') e trata o conteúdo literalmente (como aspas simples).

Essas sintaxes são ideais para grandes blocos de texto, como HTML ou SQL, mantendo a legibilidade. O identificador deve seguir as mesmas regras de nomes de variáveis e não pode ser precedido por espaços ou tabs no fechamento.

$nome = "João";
$heredoc = <<<HTML
<div>
  <p>Olá, $nome!</p>
</div>
HTML;

echo $heredoc;
// <div>
//   <p>Olá, João!</p>
// </div>

$nowdoc = <<<'TEXTO'
Isso é literal: $nome não é interpolado.
TEXTO;
echo $nowdoc; // Isso é literal: $nome não é interpolado.

No heredoc, variáveis são interpoladas; no nowdoc, não. Ambos preservam quebras de linha e espaçamentos. Use heredoc quando precisar de interpolação e nowdoc para conteúdo estático.

Funções essenciais de string

O PHP oferece centenas de funções para manipular strings. Aqui estão algumas das mais úteis no dia a dia:

  • strlen() – retorna o comprimento da string em bytes.
  • strpos() – encontra a posição da primeira ocorrência de uma substring (cuidado com falsy 0).
  • substr() – extrai parte de uma string.
  • str_replace() – substitui todas as ocorrências de uma substring por outra.
  • trim() – remove espaços em branco do início e fim.
  • strtolower() e strtoupper() – convertem para minúsculas/maiúsculas.
  • explode() e implode() – dividem/ unem strings com base em um delimitador.
$texto = "  Olá, Mundo!  ";
echo strlen($texto); // 15 (incluindo espaços)
echo strpos($texto, "Mundo"); // 7
echo substr($texto, 2, 4); // "Olá"
echo str_replace("Mundo", "PHP", $texto); // "  Olá, PHP!  "
echo trim($texto); // "Olá, Mundo!"
echo strtolower($texto); // "  olá, mundo!  "
$partes = explode(",", $texto); // ["  Olá", " Mundo!  "]
echo implode("-", $partes); // "  Olá- Mundo!  "

Lembre-se de que muitas funções de string são sensíveis a maiúsculas/minúsculas. Para versões case-insensitive, use funções como stripos() e str_ireplace(). Sempre verifique o tipo de retorno, pois funções como strpos() podem retornar false (que é igual a 0 em comparação frouxa).

Boas práticas

Ao trabalhar com strings em PHP, prefira aspas simples quando não houver interpolação ou escapes, pois são mais rápidas. Use heredoc/nowdoc para strings multilinha para melhor legibilidade. Sempre valide e sanitize strings vindas de fontes externas para evitar injeção de código. Para concatenação, o operador . é eficiente, mas em loops grandes, considere usar arrays e implode() para desempenho.

Exercícios

  1. Crie uma string com aspas simples que contenha uma variável e exiba o resultado. Depois, faça o mesmo com aspas duplas. Compare as saídas.
  2. ✓ Resposta:
    $nome = "Ana";
    echo 'Olá, $nome!'; // Olá, $nome!
    echo "Olá, $nome!"; // Olá, Ana!
  3. Use interpolação com chaves para exibir o valor de um array associativo dentro de uma string.
  4. ✓ Resposta:
    $dados = ["nome" => "Carlos", "idade" => 30];
    echo "{$dados['nome']} tem {$dados['idade']} anos."; // Carlos tem 30 anos.
  5. Crie um heredoc que contenha HTML com uma variável interpolada e exiba o resultado.
  6. ✓ Resposta:
    $titulo = "Meu Site";
    $html = <<<HTML
    <!DOCTYPE html>
    <html>
    <head><title>$titulo</title></head>
    <body><h1>Bem-vindo</h1></body>
    </html>
    HTML;
    echo $html;
  7. Use as funções explode() e implode() para transformar uma lista separada por vírgulas em uma string separada por hífens.
  8. ✓ Resposta:
    $lista = "maçã,banana,laranja";
    $frutas = explode(",", $lista);
    echo implode("-", $frutas); // maçã-banana-laranja
  9. Escreva um código que verifique se a string "PHP é incrível" contém a palavra "incrível" usando strpos() e exiba uma mensagem apropriada.
  10. ✓ Resposta:
    $frase = "PHP é incrível";
    if (strpos($frase, "incrível") !== false) {
        echo "A palavra 'incrível' foi encontrada.";
    } else {
        echo "A palavra não foi encontrada.";
    }

Referências