Strings: funções essenciais e interpolação

1. Introdução às strings em PHP

Em PHP, strings são sequências de caracteres que podem ser definidas de quatro maneiras principais. A escolha entre aspas simples (') e duplas (") é fundamental, pois determina se a interpolação de variáveis será processada.

<?php
$nome = "Maria";

// Aspas simples - não interpreta variáveis
echo 'Olá, $nome'; // Saída: Olá, $nome

// Aspas duplas - interpreta variáveis
echo "Olá, $nome"; // Saída: Olá, Maria

O acesso a caracteres individuais é feito com colchetes ou chaves:

<?php
$texto = "PHP";
echo $texto[0];  // P
echo $texto[-1]; // P (PHP 7.1+)
echo $texto{1};  // H (sintaxe mais antiga)

Para strings multilinha, PHP oferece Heredoc (interpreta variáveis) e Nowdoc (não interpreta):

<?php
$linguagem = "PHP";

// Heredoc - interpreta variáveis
$heredoc = <<<TEXTO
Aprendendo $linguagem
com strings multilinha
TEXTO;

// Nowdoc - não interpreta variáveis (aspas simples no identificador)
$nowdoc = <<<'TEXTO'
Aprendendo $linguagem
sem interpolação
TEXTO;

2. Interpolação de variáveis e expressões

A interpolação em aspas duplas permite incorporar variáveis diretamente. Para variáveis complexas ou expressões, use chaves {}:

<?php
$usuario = "João";
$pontos = 95;

// Interpolação simples
echo "Bem-vindo, $usuario!"; // Bem-vindo, João!

// Com chaves para evitar ambiguidade
echo "{$usuario} tem {$pontos} pontos";

// Arrays e objetos
$dados = ['nome' => 'Ana', 'idade' => 30];
echo "{$dados['nome']} tem {$dados['idade']} anos";

// Expressões (PHP 7.4+)
echo "Resultado: {1 + 2}"; // Resultado: 3

3. Concatenação e formatação básica

O operador . une strings, enquanto .= concatena e atribui:

<?php
$saudacao = "Olá";
$nome = "Carlos";

// Concatenação simples
echo $saudacao . ", " . $nome . "!"; // Olá, Carlos!

// Concatenação com atribuição
$mensagem = "Bem-vindo ";
$mensagem .= $nome;
echo $mensagem; // Bem-vindo Carlos

Para formatação avançada, sprintf() e printf() são essenciais:

<?php
$produto = "Notebook";
$preco = 2499.90;
$quantidade = 3;

// sprintf retorna a string formatada
$formatado = sprintf(
    "Produto: %s | Preço: R$ %.2f | Qtd: %d",
    $produto,
    $preco,
    $quantidade
);
echo $formatado;
// Produto: Notebook | Preço: R$ 2499.90 | Qtd: 3

// printf exibe diretamente
printf("Total: R$ %.2f", $preco * $quantidade); // Total: R$ 7499.70

4. Funções de manipulação de comprimento e busca

Para trabalhar com codificação multibyte (UTF-8), prefira as funções mb_*:

<?php
$texto = "Café com PHP";

// Comprimento
echo strlen($texto);    // 12 (bytes)
echo mb_strlen($texto); // 11 (caracteres)

// Busca por substring
echo strpos($texto, "PHP");     // 8
echo strrpos($texto, "a");      // última ocorrência
echo str_contains($texto, "Café"); // true (PHP 8+)

// Extração
echo substr($texto, 0, 4);     // Café
echo mb_substr($texto, 5, 3);  // com

5. Transformação de case e limpeza de strings

<?php
$texto = "   PHP é Incrível!   ";

// Transformação de case
echo strtolower($texto); //    php é incrível!   
echo strtoupper($texto); //    PHP É INCRÍVEL!   
echo ucfirst("php");     // Php
echo lcfirst("PHP");     // pHP

// Remoção de espaços
echo trim($texto);       // "PHP é Incrível!"
echo ltrim($texto);      // "PHP é Incrível!   "
echo rtrim($texto);      // "   PHP é Incrível!"

// Substituição
echo str_replace("PHP", "JavaScript", $texto); //    JavaScript é Incrível!   
echo str_ireplace("php", "Python", $texto);    // case-insensitive

6. Explosão, implosão e divisão de strings

<?php
$csv = "João,30,São Paulo";
$frase = "PHP é uma linguagem poderosa";

// Explode - string para array
$dados = explode(",", $csv);
print_r($dados);
// Array ( [0] => João [1] => 30 [2] => São Paulo )

// Implode - array para string
$array = ["PHP", "JavaScript", "Python"];
echo implode(" | ", $array); // PHP | JavaScript | Python
echo join(" - ", $array);    // alias de implode

// Divisão avançada
print_r(str_split("PHP", 2)); // Array ( [0] => PH [1] => P )

// Com expressão regular
print_r(preg_split("/[\s,]+/", $frase));
// Array ( [0] => PHP [1] => é [2] => uma [3] => linguagem [4] => poderosa )

7. Codificação e segurança com strings

<?php
$entrada = "<script>alert('XSS');</script>";
$texto = "Linha 1\nLinha 2";

// Escape HTML
echo htmlspecialchars($entrada, ENT_QUOTES, 'UTF-8');
// &lt;script&gt;alert(&#039;XSS&#039;);&lt;/script&gt;

echo htmlentities($entrada);
// Converte todos os caracteres HTML especiais

// Addslashes e stripslashes
echo addslashes("O'Reilly"); // O\'Reilly
echo stripslashes("O\'Reilly"); // O'Reilly

// Base64
$codificado = base64_encode("PHP é demais!");
echo $codificado; // UElQIMOpIGRlbWFpcyE=
echo base64_decode($codificado); // PHP é demais!

8. Funções avançadas e expressões regulares

<?php
$texto = "O PHP 8.3 foi lançado em 2024";

// Análise textual
echo str_word_count($texto); // 7
echo similar_text("PHP", "PHp", $percent); // 2 (caracteres iguais)
echo $percent; // 66.666...

// Expressões regulares
$padrao = "/\d+\.\d+/";
preg_match($padrao, $texto, $matches);
echo $matches[0]; // 8.3

$numeros = preg_replace("/\d+/", "[NÚMERO]", $texto);
echo $numeros; // O PHP [NÚMERO].[NÚMERO] foi lançado em [NÚMERO]

// CSV
$csv = "nome,idade,cidade\nJoão,30,SP\nMaria,25,RJ";
$linhas = str_getcsv($csv, "\n");
foreach ($linhas as $linha) {
    print_r(str_getcsv($linha));
}

Referências