In PHP, si possono spesso sostituire le virgolette con gli apostrofi e ottenere lo stesso effetto. A volte usiamo anche una combinazione di virgolette e apostrofi di proposito per ottenere un risultato diverso senza dover usare l'escape.
TLDR: Usare le virgolette può essere pericoloso in alcuni contesti, quindi usate invece gli apostrofi ovunque. Le virgolette sono adatte solo per casi speciali.
Carattere | Nome |
---|---|
" |
virgolette |
`'`` Apostrophe |
echo "Ciao, mondo!"; // questo è lo stessoecho 'Ciao, mondo!'; // come questo
In questo caso, l'uso delle virgolette o degli apostrofi non ha importanza. Così, in superficie, può sembrare che non ci sia differenza tra le virgolette e gli apostrofi.
Considerate il seguente codice:
echo 'Il mio colore preferito è il "rosso"!';
Se usassi i "ritorni a capo" per delimitare la stringa che viene scritta, sarebbe ambiguo dove la stringa inizia e dove finisce**, così ho usato le "apostrofi" per delimitare la stringa, il che risolve questo problema.
Occasionalmente, ci possono essere situazioni in cui ho bisogno di elencare sia quote
che apostrofi
all'interno della stessa stringa. Potete usare non solo la concatenazione di due stringhe, ma anche il cosiddetto escaping dei caratteri.
echo "Questa stringa "contiene" virgolette.";
Il backslash in questo caso ha il significato di "esattamente questo carattere" e quindi la virgoletta non sarà vista come la fine di una stringa (o altro) e quindi sarà sempre una virgoletta. Altri caratteri strani possono essere marcati in questo modo quando la loro durata non può essere garantita e il significato corretto potrebbe essere frainteso.
Le virgolette possono essere estremamente complicate perché permettono di inserire variabili direttamente in una stringa:
$color = 'Rosso';echo "Moje oblíbená barva je {$color}, a tvoje?";
Molto più sicuri sono gli apostrofi, che non lo permettono e bisogna piegare la stringa:
$color = 'Rosso';echo 'Il mio colore preferito è' . $color . 'e il tuo?';
In generale, raccomando di usare gli apostrofi (se possibile) per delimitare qualsiasi cosa, poiché sono molto meno comuni nelle stringhe rispetto alle semplici virgolette.
Inoltre, PHP è un linguaggio web, cioè è usato per generare documenti HTML, dove le virgolette sono molto comuni proprio perché sono usate anche per generare parti di codice HTML. Personalmente, consiglio di abituarsi a usare rigorosamente gli apostrofi ovunque, perché così non si deve ricordare cosa si sta racchiudendo.
Attenzione! Non buttate via completamente le virgolette! Hanno alcuni vantaggi speciali che possono essere utili per il lavoro avanzato in PHP - tuttavia, i principianti li considerano come errori e non li capiscono.
$x = 10; // imposta una variabileecho "Hodnota proměnné je: $x, přesně."; // e un elenco
All'interno delle virgolette, potete anche elencare i valori delle variabili, o il segno del dollaro fa sì che tutto ciò che lo segue sia una variabile. Quindi, se non volete emettere il valore di una variabile, ma il segno del dollaro, dovrete evadere.
$price = 25; // prezzo in dollariecho "Cena produktu: $price\$"; // stampa "Prezzo del prodotto: $25"
Il vantaggio delle virgolette è discutibile in questo caso e potrebbe essere meglio usare gli apostrofi e collegare semplicemente le stringhe.
$price = 25;echo 'Prezzo del prodotto:' . $price . '$'; // stampa lo stesso dell'esempio precedente
Nota: Il prezzo in dollari è correttamente scritto nel formato
$25
, il che causerebbe ancora più confusione, perché la notazione$$price
in realtà chiama qualcosa chiamato unavariabile variabile
(nel nome della variabile si chiama il nome della variabile da chiamare - solo confusione).
TIP: Potresti essere interessato a variabile variabile.
In generale, qualsiasi cosa tra virgolette o apostrofi è trattata come una stringa. Così:
$x = 5; // questo è qualcos'altro,$x = "5"; // di questo.
Nel primo caso il numero 5 è memorizzato nella variabile $x, nel secondo caso la stringa "5" è memorizzata nella stessa variabile. Fortunatamente, questo non ha importanza in PHP, e si può lavorare con entrambe le varianti (quasi) allo stesso modo, perché PHP può trasformare automaticamente le variabili secondo il loro contenuto. Tuttavia, è generalmente raccomandato di non scrivere i numeri tra virgolette, specialmente per le operazioni di calcolo dove possono verificarsi errori di arrotondamento.
A volte potrei voler memorizzare l'output di una funzione in una variabile:
$pi = 3.14159;$zaokrouhleni = round($pi); // questo è corretto$zaokrouhleni = "round($pi)"; // questo è "sbagliato" (la domanda è quale output mi aspetto).
L'errore nel secondo caso è proprio nelle virgolette, quando l'output della funzione round() non è memorizzato nella variabile $round, ma nella stringa che chiama questa funzione.
TIP: Il valore
$pi
non deve essere inserito direttamente nello script in questo modo e possiamo usare la funzionepi()
, che è più precisa per calcoli più complessi.
Attenzione: I seguenti esempi funzionano solo tra virgolette, se li racchiudi in apostrofi si comporteranno come caratteri regolari senza il significato speciale (tranne
'
che sfugge all'apostrofo). L'escape è per quando voglio emettere qualche carattere speciale tra virgolette o un apostrofo che potrebbe essere interpretato come un'espressione linguistica e quindi processato, anche se il programmatore non lo ha inteso. Abbiamo già mostrato un esempio; questa sezione descrive le possibili eccezioni comportamentali.
Questo perché a volte la fuga stessa ha un significato speciale. Esempio:
echo "Testo lungo, diviso in due righe.";
L'esempio precedente stampa:
Dlouhý text, rozdělený nadva řádky.
Quindi, se vogliamo scrivere una barra, dobbiamo anche fare l'escape (l'escape del carattere n
non è necessario in questo caso, perché verrebbe inteso di nuovo come un wrap, o in questo caso non dobbiamo fare alcun escape):
echo "Testo lungo, diviso in due righe.";
Ci sono altri caratteri speciali come questo, per esempio \t
fa un tab. La lista completa è nella documentazione ufficiale.
Per cominciare, vorrei sottolineare che quasi tutto può essere fatto in PHP in più modi, e gli esempi dati qui sono solo per illustrare come il problema può essere affrontato.
Per esempio, se vogliamo analizzare il testo riga per riga, possiamo usare la funzione explode.
$parser = explode("\n", $retezec); // analizza il testo riga per riga
In questo caso, l'uso del carattere speciale \n
ha senso, perché possiamo dire molto efficacemente che vogliamo analizzare per interruzioni di riga.
$parser = explode('', $retezec);
Attenzione: Sui sistemi Unix e Windows, i caratteri usati per marcare la fine delle linee sono confusi. Per esempio, Windows usa
CRLF
(una coppia di caratterir\n
), mentre Linux usa soloLF
(un singolo carattere\n
). Quando si analizza per linea, questo dovrebbe essere tenuto a mente. Di solito il problema si risolve normalizzando i caratteri solo aLF
.
Se puoi, usa apostrofi ovunque.
È bene conoscere l'uso delle virgolette e usarle solo quando è necessario (o generalmente buono). Se state emettendo del testo che può contenere delle virgolette, racchiudetelo in apostrofi (che poi si comportano in modo più prevedibile). Personalmente, uso le virgolette per esprimere vari caratteri speciali che sono inutilmente complessi da inserire negli apostrofi e richiederebbero un escaping complesso.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | it