Stringhe PHP: Una Guida Approfondita
Scopri le stringhe PHP in profondità: virgolette, concatenazione, funzioni integrate, sequenze di escape, Heredoc e Nowdoc con esempi pratici.
Una stringa è una sequenza di caratteri usata per memorizzare e manipolare testo — nomi, messaggi, HTML, JSON, contenuti di file e molto altro. Le stringhe sono uno dei tipi di dati fondamentali di PHP, e quasi ogni programma PHP le utilizza. Questa guida illustra come creare stringhe, la differenza cruciale tra virgolette singole e doppie, la concatenazione, l'accesso ai singoli caratteri, le funzioni integrate più utili, le sequenze di escape e le sintassi multiriga Heredoc e Nowdoc — con esempi eseguibili lungo tutto il percorso.
Cos'è una Stringa PHP?
Una stringa è testo racchiuso tra virgolette e memorizzato in una variabile. PHP offre quattro modi per scriverne una: virgolette singole, virgolette doppie, Heredoc e Nowdoc. I due stili di virgolette sono quelli che userai più spesso:
<?php
$single = 'Hello World';
$double = "Hello World";
echo $single; // Hello World
echo "\n";
echo $double; // Hello WorldLe stringhe non hanno un limite di lunghezza fisso se non la memoria disponibile, quindi una stringa può contenere un singolo carattere o un intero documento.
Virgolette Singole vs. Doppie
Questa è la distinzione più importante da imparare subito, perché scegliere lo stile sbagliato è una fonte comune di bug. Le virgolette doppie interpretano le sequenze di escape e interpolano le variabili; le virgolette singole trattano quasi tutto letteralmente.
<?php
$name = 'Alice';
echo "Hello $name\n"; // Hello Alice (variable + newline parsed)
echo 'Hello $name\n'; // Hello $name\n (printed literally)Quando la variabile è a contatto con altri caratteri, racchiudila tra parentesi graffe in modo che PHP sappia dove termina il nome:
<?php
$item = 'book';
echo "I bought 3 {$item}s\n"; // I bought 3 booksLe virgolette singole sono marginalmente più veloci e sicure quando non hai bisogno dell'interpolazione — preferiscile per il testo fisso. Usa le virgolette doppie (o Heredoc) quando devi incorporare variabili o sequenze di escape.
Concatenazione di Stringhe
Unire più stringhe in una sola si chiama concatenazione. PHP usa l'operatore punto (.), e .= aggiunge in coda a una stringa esistente:
<?php
$first = 'Hello';
$last = 'World';
$greeting = $first . ' ' . $last;
echo $greeting; // Hello World
$greeting .= '!';
echo "\n" . $greeting; // Hello World!Nota che PHP usa . per la concatenazione, non + — usare + su due stringhe tenta un'addizione numerica e quasi mai è quello che si vuole.
Accesso ai Caratteri
Una stringa si comporta come un array di caratteri. Puoi leggere qualsiasi carattere tramite il suo indice a base zero usando le parentesi quadre:
<?php
$word = 'PHP';
echo $word[0]; // P
echo $word[2]; // P
echo $word[-1]; // P (negative index counts from the end)Per ottenere la lunghezza della stringa, usa strlen:
<?php
echo strlen('Hello World'); // 11 (the space counts)Funzioni per Stringhe più Comuni
PHP include una ricca libreria di funzioni per le stringhe. Ecco quelle che userai più spesso, ognuna con un link a un capitolo dedicato:
| Funzione | Scopo |
|---|---|
strlen | Lunghezza di una stringa (in byte) |
strpos | Posizione della prima occorrenza di una sottostringa |
str_replace | Sostituisce tutte le occorrenze di una sottostringa |
strtoupper / strtolower | Cambia il case |
substr | Estrae una parte di una stringa |
trim | Rimuove gli spazi bianchi da entrambe le estremità |
explode / implode | Converte tra stringhe e array |
sprintf | Formatta una stringa da un template |
Un rapido tour:
<?php
$text = ' The quick brown fox ';
echo strlen($text); // 23
echo "\n";
echo strpos($text, 'quick'); // 6
echo "\n";
echo str_replace('quick', 'slow', trim($text)); // The slow brown fox
echo "\n";
echo strtoupper(trim($text)); // THE QUICK BROWN FOX
echo "\n";
echo substr(trim($text), 0, 3); // Thesprintf costruisce una stringa da un template, utile per numeri e padding:
<?php
$price = 9.5;
echo sprintf('Total: $%.2f', $price); // Total: $9.50Lavorare con Unicode
Le funzioni standard come strlen e strpos contano i byte, non i caratteri. Per testo contenente lettere accentate, emoji o script non latini, usa gli equivalenti multi-byte mb_* dell'estensione mbstring in modo che i caratteri multi-byte vengano contati correttamente:
<?php
$word = 'café';
echo strlen($word); // 5 (é is 2 bytes in UTF-8)
echo "\n";
echo mb_strlen($word); // 4 (correct character count)Sequenze di Escape
All'interno delle stringhe con virgolette doppie, una barra rovesciata avvia una sequenza di escape — un modo per scrivere caratteri difficili da digitare o che altrimenti verrebbero interpretati. Le più comuni:
| Sequenza | Significato |
|---|---|
\n | A capo |
\t | Tab |
\" | Virgolette doppie letterali |
\\ | Barra rovesciata letterale |
\$ | Segno dollaro letterale (sopprime l'interpolazione) |
<?php
echo "Line 1\nLine 2"; // prints on two lines
echo "\n";
echo "Price: \$5"; // Price: $5
echo "\n";
echo "She said \"hello\""; // She said "hello"Le stringhe con virgolette singole riconoscono solo \' (una virgoletta letterale) e \\; tutto il resto, incluso \n, viene stampato verbatim.
Heredoc e Nowdoc
Quando hai bisogno di una stringa lunga e multiriga, Heredoc e Nowdoc sono più puliti che aggiungere a mano le newline.
Heredoc si comporta come una stringa con virgolette doppie: le variabili vengono interpolate e le sequenze di escape funzionano. Si apre con <<< seguito da un identificatore e si chiude con lo stesso identificatore su una riga a sé:
<?php
$name = 'Alice';
$message = <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear Alice,
// Welcome aboard!Nowdoc si comporta come una stringa con virgolette singole — nessuna interpolazione, nessuna interpretazione di escape. L'unica differenza sintattica è che l'identificatore di apertura è racchiuso tra virgolette singole:
<?php
$name = 'Alice';
$message = <<<'EOT'
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear $name,
// Welcome aboard!Usa Heredoc per output basato su template (email, blocchi HTML) e Nowdoc quando vuoi che il testo rimanga esattamente come scritto.
Riepilogo
Le stringhe PHP sono la spina dorsale del lavoro con il testo. I punti essenziali da ricordare:
- Usa le virgolette singole per il testo letterale e le virgolette doppie (o Heredoc) quando hai bisogno di interpolazione di variabili o sequenze di escape.
- Concatena con l'operatore
., non con+. - Ricorri alle funzioni integrate come
strlen,substr,str_replaceeexplodeinvece di reinventarle. - Usa le funzioni
mb_*ogni volta che il testo può contenere caratteri non ASCII.
Successivamente, impara a visualizzare stringhe e altri valori con echo e print, oppure esplora i numeri e gli array PHP.