PHP – virgolette singole e doppie

10 Set

Out Of Date Warning

Questo post è stato pubblicato più di 2 anni fa (il 10 Settembre 2011). Le idee vanno avanti velocemente, le prospettive cambiano quindi i contenuti potrebbero non essere aggiornati. Ti prego di tenere in considerazione questo, e di verificare le informazioni tecniche presenti nell'articolo prima di farne affidamento per i tuoi scopi.

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:

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 \.

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:

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 Commenti su “PHP – virgolette singole e doppie”

  1. Carol 26 Settembre 2011 at 05:36 #

    Much appreciated for the information and share!

  2. Fabio 4 Giugno 2013 at 09:28 #

    Ciao, grande articolo, grazie per avermi chiarito questo dubbio che continuava a rallentare il mio lavoro !!

  3. Marcello Marino 29 Ottobre 2018 at 13:26 #

    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