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');
// <script>alert('XSS');</script>
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
- PHP Manual: Strings — Documentação oficial completa sobre tipos string, sintaxe e interpolação.
- PHP: String Functions — Lista completa de funções nativas para manipulação de strings.
- PHP: mb_string - Multibyte String Functions — Funções para manipulação segura de strings com codificação multibyte.
- PHP: str_contains, str_starts_with, str_ends_with — Novas funções de busca introduzidas no PHP 8+.
- PHP: sprintf - Formatted String — Guia completo sobre formatação de strings com placeholders.
- PHP The Right Way: Strings — Boas práticas e padrões recomendados para manipulação de strings em PHP moderno.