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
<?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
<?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
?>
▶ Experimente
💡 Dica: Ao inserir variáveis entre aspas duplas, use sempre a sintaxe com chaves {$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
<?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;
?>
💡 Dica: O Heredoc é perfeito para gerar grandes blocos de modelos HTML dentro do PHP. O marcador de fechamento (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
<?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
?>
🔥 Erro comum: Em PHP, + é 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
<?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)
?>
▶ Experimente

5. Dividindo e unindo strings

PHP
<?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
<?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
<?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()
?>
▶ Experimente
🔥 Erro comum: 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() e str_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

📝 Exercícios

  1. 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.
  2. Use explode para dividir uma sequência de tags separadas por vírgulas em um array, remover as duplicatas e, em seguida, use implode para juntá-las novamente e exibi-las.
  3. Escreva uma função que aceite uma string de endereço de e-mail e utilize strpos e substr para extrair a parte do nome de usuário (tudo o que vem antes de @).
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%