W3docs

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 World

Le 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 books

Le 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:

FunzioneScopo
strlenLunghezza di una stringa (in byte)
strposPosizione della prima occorrenza di una sottostringa
str_replaceSostituisce tutte le occorrenze di una sottostringa
strtoupper / strtolowerCambia il case
substrEstrae una parte di una stringa
trimRimuove gli spazi bianchi da entrambe le estremità
explode / implodeConverte tra stringhe e array
sprintfFormatta 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);      // The

sprintf costruisce una stringa da un template, utile per numeri e padding:

<?php
$price = 9.5;
echo sprintf('Total: $%.2f', $price); // Total: $9.50

Lavorare 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:

SequenzaSignificato
\nA capo
\tTab
\"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.

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_replace e explode invece 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.

Pratica

Pratica
In PHP, quali delle seguenti affermazioni sulle stringhe sono corrette?
In PHP, quali delle seguenti affermazioni sulle stringhe sono corrette?
Was this page helpful?