Fundamentos de Strings em PHP
Uma string em PHP é uma sequência de caracteres que pode ser delimitada por aspas simples (''), duplas ("") ou por heredoc/nowdoc. A escolha do delimitador impacta na interpretação de variáveis e caracteres especiais. Strings com aspas duplas permitem interpolação de variáveis, enquanto aspas simples tratam tudo literalmente (mais eficiente em termos de performance). Para strings muito longas, heredoc oferece melhor legibilidade.
$nome = "João";
$sobrenome = 'Silva';
// Interpolação com aspas duplas
echo "Olá, {$nome} {$sobrenome}"; // Output: Olá, João Silva
// Sem interpolação
echo 'Olá, $nome'; // Output: Olá, $nome
// Heredoc - permite interpolação
$mensagem = <<<EOT
Bem-vindo, $nome!
Este é um texto com múltiplas linhas.
EOT;
echo $mensagem;
Dica prática: Use aspas simples como padrão; use duplas apenas quando precisar interpolar variáveis. Heredoc é ideal para templates ou textos grandes.
Manipulação de Strings
Concatenação e Comprimento
A concatenação em PHP usa o operador ponto (.) ou interpolação dentro de aspas duplas. A função strlen() retorna o número de bytes (não caracteres Unicode), então para trabalhar com caracteres multibyte use mb_strlen().
$saudacao = "Olá" . ", " . "mundo!";
echo $saudacao; // Output: Olá, mundo!
$texto = "Programação em PHP";
echo strlen($texto); // 19 bytes
echo mb_strlen($texto, 'UTF-8'); // 19 caracteres (neste caso, igual)
// Com acentuação
$titulo = "Configuração";
echo mb_strlen($titulo, 'UTF-8'); // 12 caracteres (strlen daria 14 bytes)
Extração e Busca
As funções substr() e strpos() são fundamentais. substr() extrai uma porção da string usando índices, enquanto strpos() localiza a primeira ocorrência de um substring. Sempre verifique o retorno de strpos() usando !== (não apenas !=), pois pode retornar 0 (encontrado no início).
$email = "usuario@dominio.com.br";
// Extração
$dominio = substr($email, strpos($email, '@') + 1);
echo $dominio; // Output: dominio.com.br
// Busca - cuidado com o retorno 0
$texto = "PHP é poderoso";
if (strpos($texto, "PHP") !== false) {
echo "Encontrado!"; // Executa
}
// Pegar últimos 4 caracteres
$extensao = substr($email, -4);
echo $extensao; // Output: .com
Divisão e Junção
explode() divide uma string em um array usando um delimitador; implode() faz o inverso, unindo elementos de um array em uma string. str_split() divide em pedaços de um tamanho fixo.
$csv = "maçã,banana,laranja,uva";
$frutas = explode(",", $csv);
print_r($frutas);
// Array ( [0] => maçã [1] => banana [2] => laranja [3] => uva )
// Rejuntar
$texto = implode(" - ", $frutas);
echo $texto; // Output: maçã - banana - laranja - uva
// Dividir em chunks
$codigo = "A1B2C3D4";
$grupos = str_split($codigo, 2);
print_r($grupos);
// Array ( [0] => A1 [1] => B2 [2] => C3 [3] => D4 )
Transformação e Formatação
Caso de Caracteres
As funções strtoupper(), strtolower(), ucfirst() e ucwords() controlam maiúsculas e minúsculas. Para trabalhar com caracteres multibyte, prefira as variantes mb_strtoupper() e mb_strtolower().
$nome = "joão da silva santos";
echo strtoupper($nome); // JOÃO DA SILVA SANTOS
echo strtolower($nome); // joão da silva santos
echo ucfirst($nome); // João da silva santos
echo ucwords($nome); // João Da Silva Santos
// Multibyte
echo mb_strtoupper($nome, 'UTF-8'); // JOÃO DA SILVA SANTOS
Remoção e Substituição
trim() remove espaços (ou caracteres especificados) do início e fim; ltrim() e rtrim() atuam apenas em um lado. str_replace() substitui todas as ocorrências (sensível a maiúsculas), enquanto str_ireplace() é insensível. preg_replace() usa expressões regulares para substituições complexas.
$entrada = " João Silva \n";
echo trim($entrada); // João Silva
echo ltrim($entrada); // João Silva \n
$texto = "PHP é ótimo. PHP é poderoso.";
echo str_replace("PHP", "JavaScript", $texto);
// Output: JavaScript é ótimo. JavaScript é poderoso.
// Insensível a maiúsculas
echo str_ireplace("php", "Python", $texto);
// Output: Python é ótimo. Python é poderoso.
// Regex
$telefone = "11-98765-4321";
echo preg_replace("/\D/", "", $telefone); // 11987654321 (remove não-dígitos)
Formatação de Saída
sprintf() formata strings como em C; number_format() formata números; wordwrap() quebra linhas; str_pad() preenche espaços.
// sprintf - semelhante a printf
$id = 42;
$resultado = sprintf("ID: %03d", $id);
echo $resultado; // ID: 042
// number_format
$preco = 1500.75;
echo number_format($preco, 2, ",", ".");
// Output: 1.500,75
// wordwrap
$texto = "Este é um texto muito longo que precisa ser quebrado";
echo wordwrap($texto, 20, "\n");
// Quebra a cada 20 caracteres
// str_pad
echo str_pad("PHP", 10, "*", STR_PAD_RIGHT); // PHP*******
echo str_pad("123", 5, "0", STR_PAD_LEFT); // 00123
Validação e Limpeza
Verificação de Conteúdo
Funções como str_contains() (PHP 8+), strpos(), ctype_* e filter_var() verificam se uma string contém ou representa um padrão específico. Use validação antes de processar dados de usuários.
$url = "https://www.exemplo.com.br";
$email = "contato@exemplo.com";
$numero = "12345";
// PHP 8+ - str_contains
if (str_contains($url, "exemplo")) {
echo "URL válida";
}
// Validação de email
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Email válido";
}
// Verificar se é apenas dígitos
if (ctype_digit($numero)) {
echo "Apenas números";
}
// Verificar se é alfanumérico
if (ctype_alnum("abc123")) {
echo "Alfanumérico válido";
}
Sanitização
htmlspecialchars() escapa caracteres HTML (essencial para evitar XSS); addslashes() e stripslashes() lidam com aspas; json_encode() serializa para JSON seguramente.
$entrada = "<script>alert('Hacker')</script>";
// Escaper HTML
$seguro = htmlspecialchars($entrada, ENT_QUOTES, 'UTF-8');
echo $seguro;
// Output: <script>alert('Hacker')</script>
// JSON
$dados = ["nome" => "João", "idade" => 30];
$json = json_encode($dados);
echo $json; // {"nome":"João","idade":30}
// Decodificar
$recuperado = json_decode($json, true);
print_r($recuperado); // Array ( [nome] => João [idade] => 30 )
Conclusão
Nesta aula abordamos os três pilares da manipulação de strings em PHP: operações básicas (concatenação, extração, divisão), transformação (caso, substituição, formatação) e validação/sanitização (essencial para segurança). Domine strpos(), substr(), explode(), str_replace() e htmlspecialchars() — estas cinco funções resolvem 80% dos casos reais. Lembre-se sempre de considerar caracteres multibyte ao trabalhar com acentuação, e nunca confie em dados do usuário sem validar e sanitizar primeiro.