Categorie
PHP

PHP – virgolette singole e doppie

In PHP è importante capire come le virgolette singole differiscono dalle virgolette doppie.

Questo è un concetto estremamente banale per chi ha familiarità con il linguaggio, ma per i neofiti spesso può provocare una certa confusione.

Con echo() e print(), o quando assegnamo dei valori alle stringhe, possiamo utilizzare tranquillamente entrambe.

Ma c’è una differenza fondamentale tra i due tipi di virgolette e, sul quando si dovrebbe usare l’una piuttosto che l’altra.

In PHP, i valori racchiusi tra apici singoli (') saranno trattati come letterali, mentre quelli racchiusi tra doppi apici (") saranno interpretati.

In altre parole, l’immissione di variabili e caratteri speciali tra virgolette doppie si tradurrà nei loro valori rappresentati, non nei loro valori letterali. Esempio:

$var = "prova";

echo "var = $var";	// output: var = prova
echo 'var = $var';	// output: var = $var

Il codice echo "var = $var"; stamperà var = prova, mentre il codice echo 'var = $var'; stamperà var = $var.

Inoltre visto che le stringhe possono contenere qualsiasi carattere e visto che alcuni di questi non possono essere scritti, essi richiedono una notazione speciale, anteponendo il backslash al carattere.

Le virgolette singole a differenza di quelle doppie non supportano le sequenze di escape o meglio, gli unici due metodi di escape supportati sono ' e \.

$user = "Luigi";
$tot = "23.00";

echo "Ciao, \"$user\" spendi: \$$tot.";
//output: Ciao, "Luigi" spendi: $23.00.

echo 'Ciao, "$user" spendi: $$tot.';
//output: Ciao, "$user" spendi: $$tot.

Come questi esempi dovrebbero illustrare, le virgolette doppie andranno a sostituire il nome di una variabile ($tot) con il suo valore, ed il codice di un carattere speciale ($) con il suo valore rappresentato ($).

Gli apici singoli visualizzeranno sempre letteralmente il loro contenuto, fatta eccezione per (') e (\), che vengono stampati come una virgoletta singola e una singola barra rovesciata, rispettivamente.

Se si dovesse stampare del codice HTML utilizzando le virgolette doppie, dovremmo utilizzare l’escape per tutte le doppie virgolette nella stringa, quindi è decisamente più comodo usare le virgolette singole:

// con doppie virgolette
echo "<a href=\"mioLink\" target=\"_blank\"><img src=\"miaImg.gif\" alt=\"img1\"></a>";
// con virgolette singole
echo '<a href="mioLink" target="_blank"><img src="miaImg.gif" alt="img1"></a>';

Conclusioni

Poiché PHP cercherà di trovare le variabili tra virgolette doppie, utilizzando le virgolette singole è teoricamente più veloce. Se avete bisogno di stampare il valore di una variabile, però, è necessario utilizzare le virgolette doppie.

3 risposte su “PHP – virgolette singole e doppie”

Good article to give clarity and transparence to a very insidious problem. I would add just a thing to your very nice explanation. This problem needs you pay great attention when you’re using php embedded in html. When you types i.e. onfocus attribute as follows:

$centerContents = “<input type='text' class='contact' style='width:390px;float:left' placeholder='Cerca un contatto' onfocus='this.placeholder=\"\"' id='search' value=\""

you are going to assign an empty string to the placeholer attribute (to hide when user clicks on it). Note how apex is written: it is preceded by the the backslash. In fact, this is an assign (it would have the double apex) but it wants the backslash to set apart the the double apex of the php variable $centerContents. Pay attention to this.
Enjoy your code!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.