Análise aprofundada das strings
O PHP é excepcionalmente eficiente no manuseio de strings — afinal, ele foi originalmente desenvolvido para gerar texto HTML. Esta lição aborda todas as operações básicas com strings que você utilizará no dia a dia.
1. Aspas simples x aspas duplas
<?php
$name = "John";
// Single quotes: literal output — no variable parsing
echo 'Hello, $name'; // Hello, $name (variable not parsed)
// Double quotes: variables and escape sequences are parsed
echo "Hello, $name"; // Hello, John (variable parsed)
echo "Hello, {$name}"; // Hello, John (curly braces clarify the variable boundary — recommended)
?>
| Recurso | Aspas simples '' |
Aspas duplas "" |
|---|---|---|
| Analisa variáveis | ❌ | ✅ |
Analisa sequências de escape (\n \t) |
❌ (apenas \\ \') |
✅ |
| Velocidade | Um pouco mais rápido (sem análise) | Um pouco mais lento |
| Ideal para | Texto simples, valores de configuração | Inserção de variáveis |
▶ Exemplo: As chaves esclarecem os limites das variáveis
<?php
$drink = "coffee";
echo "Give me a {$drink} latte"; // Give me a coffee latte ✅
echo "Give me a $drink latte"; // Warning: Undefined variable $drink_latte
// When characters immediately follow a variable, use curly braces
?>
{$var}. Essa é a abordagem mais segura e legível.
2. Heredoc e Nowdoc
Quando você precisa escrever strings com várias linhas, o Heredoc e o Nowdoc são muito mais elegantes do que concatenar repetidamente aspas simples ou duplas:
<?php
$title = "PHP Tutorial";
// Heredoc: the multi-line equivalent of double quotes (parses variables)
$html = <<<HTML
<div class="header">
<h1>{$title}</h1>
<p>This is lesson one</p>
</div>
HTML;
// Nowdoc: the multi-line equivalent of single quotes (no variable parsing)
$config = <<<'CONFIG'
database_host = localhost
database_name = $db_name
CONFIG;
// $db_name is output literally — not parsed
echo $html;
?>
HTML; no exemplo acima) deve estar no início da linha, sem espaços à esquerda nem recuo.
3. Concatenação de strings
O PHP usa o ponto . para concatenar strings (não + — esse é usado em matemática):
<?php
// Concatenate with .
$greeting = "Hello, " . "World!";
echo $greeting; // Hello, World!
// Concatenate variables
$name = "John";
echo "Welcome, " . $name; // Welcome, John
// .= for append concatenation
$text = "PHP";
$text .= " Tutorial"; // Equivalent to $text = $text . " Tutorial"
echo $text; // PHP Tutorial
?>
+ é a operação de adição matemática; . é a concatenação de strings. "10" + "5" = 15 (adição numérica), enquanto "10" . "5" = "105" (concatenação de strings).
4. Funções essenciais para strings
O PHP possui mais de 100 funções de string integradas. Aqui estão as que você usará com mais frequência:
▶ Exemplo: Operações básicas com strings
<?php
$str = "Hello PHP World";
// Length
echo strlen($str); // 16
// Find position (returns false if not found)
echo strpos($str, "PHP"); // 6 (0-based)
var_dump(strpos($str, "Java")); // bool(false)
// Substring
echo substr($str, 6, 3); // "PHP" (3 chars starting at position 6)
echo substr($str, -5); // "World" (last 5 characters)
// Replace
echo str_replace("World", "Earth", $str); // Hello PHP Earth
echo str_ireplace("php", "JS", $str); // Hello JS World (case-insensitive)
// Trim whitespace
$input = " hello ";
echo trim($input); // "hello" (both sides)
echo ltrim($input); // "hello " (left only)
echo rtrim($input); // " hello" (right only)
// Case conversion
echo strtoupper("hello"); // HELLO
echo strtolower("HELLO"); // hello
echo ucfirst("hello world"); // Hello world (first letter uppercase)
echo ucwords("hello world"); // Hello World (every word capitalized)
?>
5. Dividindo e unindo strings
<?php
// explode: string → array (split by delimiter)
$tags = "PHP,MySQL,Redis";
$tagArray = explode(",", $tags);
var_dump($tagArray); // ["PHP", "MySQL", "Redis"]
// implode / join: array → string (join with delimiter)
$arr = ["apple", "banana", "orange"];
echo implode(", ", $arr); // apple, banana, orange
echo join(" - ", $arr); // apple - banana - orange (join is an alias for implode)
// str_split: split by length
$chars = str_split("Hello", 2);
var_dump($chars); // ["He", "ll", "o"]
?>
6. Formatação de strings
<?php
// sprintf: formatted string (like C)
$name = "John";
$score = 92.5;
echo sprintf("%s scored %.1f points", $name, $score); // John scored 92.5 points
// Common format placeholders
// %s — string
// %d — integer
// %f — float
// %.2f — float with 2 decimal places
// number_format: thousands separator formatting
echo number_format(1234567.89, 2); // 1,234,567.89
// nl2br: newlines → <br> (essential for displaying database text on a web page)
$text = "Line one\nLine two\nLine three";
echo nl2br($text);
// Output: Line one<br>Line two<br>Line three
?>
▶ Exemplo: Operações combinadas com strings
<?php
// Scenario: processing a user-entered name
$input = " John ";
$name = trim($input); // Remove whitespace
// Check for forbidden words
if (strpos($name, "admin") !== false) {
echo "Username cannot contain 'admin'";
} else {
echo "Welcome, " . strtoupper($name) . "!"; // Welcome, JOHN!
}
// Important: strpos returns a position, and position 0 is a valid value
// Always use !== false to check, never !strpos()
?>
strpos() retorna 0 quando a correspondência está na posição 0, e em PHP 0 == false resulta em true! Sempre use a comparação estrita !== false para verificar se “foi encontrado” — nunca use if (strpos(...)).
❓ Perguntas Frequentes
P: Quando devo usar aspas simples e quando devo usar aspas duplas? R: Use aspas simples quando não for necessário incluir variáveis (é um pouco mais rápido). Use aspas duplas quando precisar de variáveis ou sequências de escape. Para modelos HTML grandes, use Heredoc.
P: Qual é a diferença entre
explode()estr_split()? R:explode("delimiter", $str)divide o texto por um delimitador especificado.str_split($str, length)divide o texto em trechos de comprimento fixo.
P: O strpos retorna 0, e 0 é considerado falso em uma instrução if — o que devo fazer? R: Essa é uma das armadilhas mais comuns do PHP. Sempre use
if (strpos($haystack, $needle) !== false)— acrescente!==para uma comparação estrita.
📖 Resumo
- As aspas simples não analisam variáveis nem sequências de escape (use-as para texto simples); as aspas duplas, sim (use-as ao incorporar variáveis)
- Use
.para concatenar cadeias de caracteres e.=para anexar (não+) - Heredoc para modelos com várias linhas (analisa variáveis); Nowdoc para texto simples com várias linhas (não analisa)
strlen/strpos/substr/str_replace/trimsão as funções mais comunsexplodedivide uma string em um array;implodeune um array em uma string- Sempre compare
strpos()com!== false— nunca comif (strpos())
📝 Exercícios
- Pegue uma string inserida pelo usuário e processe-a: remova os espaços em branco no início e no final → converta tudo para letras minúsculas → substitua todos os espaços por sublinhados → exiba o resultado.
- Use
explodepara dividir uma sequência de tags separadas por vírgulas em um array, remover as duplicatas e, em seguida, useimplodepara juntá-las novamente e exibi-las. - Escreva uma função que aceite uma string de endereço de e-mail e utilize
strposesubstrpara extrair a parte do nome de usuário (tudo o que vem antes de@).



