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:
1 2 | $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,
1 2 | $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 \.
1 2 3 4 5 6 7 8 | $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:
1 2 3 4 | // 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>' ; |