Sembra banale, ma per i neofiti del php spieghiamo la differenza tra virgolette singole e virgolette doppie.
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:
$valore = "ciao mondo!"; echo "vediamo cosa esce richimando il: $valore";
la stampa che vedra’ sul video sara’ vediamo cosa esce richimando il: ciao mondo mentre con apice cioe’ le virgolette singole,
$valore = "ciao mondo!"; echo 'vediamo cosa esce richimando il: $valore';
stampera’ la seguente stringa: vediamo cosa esce richimando il: $valore.
Detto questo si deve dire che 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>';