O que Todo Dev Deve Saber sobre Strings em PHP: Manipulação, Funções e Formatação Já leu

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. strlen() mbstrlen() php $saudacao = "Olá" . ", " . "mundo!"; echo $saudacao; // Output: Olá, mundo! $texto = "Programação em PHP"; echo strlen($texto); // 19 bytes echo mbstrlen($texto, 'UTF-8'); // 19 caracteres (neste caso, igual) // Com acentuação $titulo = "Configuração"; echo mbstrlen($titulo, 'UTF-8'); // 12 caracteres (strlen daria 14 bytes) substr() strpos() substr() strpos() strpos() !== != php $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")

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: &lt;script&gt;alert('Hacker')&lt;/script&gt;

// 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.

Referências


Artigos relacionados