Diferența dintre ghilimele duble și cele simple în PHP. Citate PHP, ghilimele simple, ghilimele duble, scăpare Ce înseamnă variabilele din ghilimele simple PHP

Șirurile PHP sunt înconjurate de ghilimele simple sau duble. Principala diferență este că puteți înlocui o variabilă cu ghilimele duble:

Acum putem veni cu o altă soluție la problema din lecția Variabile în PHP:

$ titlu"; ecou"

$ content
"; ?>

Cum găsește PHP o variabilă într-un șir?

E simplu. Vă amintiți ce simboluri pot fi utilizate într-un nume de variabilă? Acestea sunt cifre, litere și subliniere _.

Așadar, PHP ia totul între simbolul $ și primul caracter interzis ca nume.

În următorul cod, PHP va determina incorect numele variabilei și va genera o eroare:

Rezultat în browser:

Notă: Variabilă nedefinită: pricerub în D: \ OpenServer \ domains \ site \ index.php pe linia 3

Pentru ca PHP să determine corect numele unei variabile dintr-un șir, trebuie să o puneți în paranteze ():

Rezultat în browser:

RUR 1499

Nu există o opinie fără echivoc despre ghilimele care ar trebui utilizate pentru șirurile obișnuite care nu trebuie înlocuite. Cu toate acestea, mulți programatori preferă să utilizeze ghilimele unice.

Faptul este că ghilimelele duble la mulți oameni determină asocierea „ceva ar trebui înlocuit în acest șir”. Prin urmare, vă recomand să utilizați ghilimele simple pentru text normal și ghilimele duble numai atunci când trebuie să înlocuiți o variabilă din text. Exemplu:

Citate care scapă

Dacă trebuie să introduceți ghilimele într-un șir, există 2 moduri de a face acest lucru:

În al doilea exemplu, bară inversă \ scapă de următorul citat, astfel încât PHP să-l interpreteze ca un șir.

Ce credeți că trebuie să faceți pentru a afișa numai backslash-ul? La urma urmei, va scăpa de cota de închidere. Este amuzant, dar trebuie să scrieți o a doua bară pentru a scăpa de prima:

Filele și întreruperile de linie în ghilimele duble

O bară inversă între ghilimele duble vă permite să scăpați nu numai de ghilimele și de dvs., ci și de alte caractere. Cele mai populare sunt filele (spațiul mare pe care îl obțineți atunci când apăsați TAB) și întreruperile de linie. Arată așa:

Scrieți un script care:
1. Creează o variabilă tip $ cu valoarea Joc.
2. Creează o variabilă $ nume cu valoarea „World of Warcraft” (cu ghilimele).
3. Afișează ambele variabile din interiorul etichetei

... Trebuie să existe un spațiu între variabile.

Nu sunt un expert în programarea PHP, dar sunt puțin confuz cu privire la motivele pentru care văd un cod în PHP cu un șir încadrat între ghilimele simple și uneori ghilimele duble.

Știu doar în limbajul .NET sau C, dacă este într-un singur citat, înseamnă că este un caracter, nu un șir.

11 răspunsuri

ce ar trebui să știi

$ a = "nume"; $ b = "$ a mea"; == "numele meu" $ c = "$ meu a"; ! = "numele meu"

în PHP oamenii folosesc un singur ghilimel pentru a defini un șir constant ca „a”, „numele meu”, „abc xyz”, atunci când folosesc un ghilimel dublu pentru a defini un șir conține un identificator precum „a $ b $ c $ d”.

Ecou „numele meu”;

mai rapid decât

Ecou „numele meu”;

Ecou „al meu”. $ a;

mai incet decat

Ecou „$ a meu”;

acest lucru este valabil pentru celelalte șiruri utilizate.

exemplu de citate simple, duble, heredoc și nowdoc

ambele tipuri de caractere imbricate sunt șiruri. Un tip de cotație este utilizat în mod convenabil pentru a încheia un alt tip de cotație. """ și """ . Cea mai mare diferență între tipurile de ghilimele este că referințele la identificatorii cuibăriți sunt înlocuiți în ghilimele duble, dar nu în ghilimele unice.

în PHP, textul citatului unic este tratat ca o valoare șir, iar textul citatului dublu va analiza variabilele, înlocuind și procesând valoarea acestora.

$ test = "variabilă"; ecou „Hello Mr $ test”; // ieșirea ar fi: Hello Mr variabil ecou "Hello Mr $ test"; // rezultatul ar fi: Bună ziua dl $ test

aici ghilimelul dublu analizează valoarea, iar ghilimelul unic este tratat ca o valoare șir (fără a analiza variabila $ test.)

Poate că am întârziat puțin și sunt puțin subiect, dar totuși ...

nu trebuie să alegeți din cauza conținutului șirului dvs. între:
alert ("Este \" timpul \ "jocului."); sau alert ("Este \" timpul "jocului.");

în schimb, puteți tasta astfel, apoi puteți utiliza ghilimele duble sau simple, pentru că nu contează:
alert („Este timpul„ jocului ”."); și alert („Este timpul„ jocului ”.));

$ nume = "test"; $ singleQuote = "Acesta este un exemplu pentru citatul unic $ nume"; // aici variabila $ name nu evaluează echo $ singleCitat; // Ieșire: Acesta este un exemplu pentru citatul unic $ name $ singleQuote = "Acesta este un exemplu pentru citatul simplu $ name"; // aici $ variabila nume va evalua și va înlocui valoarea variabilei echo $ singleCitat; // Ieșire: Acesta este un exemplu pentru testul ghilimelelor simple. De asemenea, în expresia ghilimelelor simple, evaluați campare mai rapidă la ghilimele duble

un lucru:

este foarte important să rețineți că linia cu ID-ul de închidere ajuta heredoc nu trebuie să conțină alte caractere în afară punct și virgulă (;)... Aceasta înseamnă că identificatorul nu poate fi indentat, și nu poate fi premise sau fileleînainte sau după punctul zecimal.

exemplu:

$ str =<<

Ce fel de ghilimele ar trebui să folosesc pentru a decora șirurile - apostrofe sau ghilimele duble clasice?

Să aruncăm o privire la diferența dintre ghilimele duble și cele simple în PHP și să folosim exemple pentru a afla când să le folosim.

Variabilele și secvențele de evadare pentru caracterele speciale găsite în șirurile cuprinse între ghilimele unice nu sunt procesate. Șirurile înconjurate de apostrofe sunt procesate de interpretul PHP mult mai repede decât șirurile similare înconjurate de ghilimele duble.

Motivul este simplu: interpretul PHP verifică suplimentar prezența variabilelor pentru șiruri între ghilimele duble și, dacă acestea sunt găsite, atunci în locul numelui variabilei, valoarea acesteia este inserată în șir. Dar un șir închis în apostrofe este interpretat de interpret ca text simplu, iar PHP nu efectuează nicio transformare în aceste șiruri. Cred că este de înțeles că procesarea șirurilor cu citate unice va fi oricum mai rapidă.

Mai întâi, să descriem cum să definim un șir și apoi să verificăm cât de rapidă va fi prelucrarea șirurilor în ghilimele unice.

Cel mai simplu mod de a defini un șir este să îl încadrați între ghilimele simple ("). Pentru a utiliza ghilimelele dintr-un singur șir ghilimelat, acestea trebuie să fie precedate de un caracter invers (\), adică scăpat. Dacă barul invers trebuie să apară înainte de o singură ofertă sau de a fi la sfârșitul unei linii, trebuie să o duplicați. Dacă încercați să scăpați de orice alt caracter, va fi tipărită și bară inversă.

Iată un exemplu de utilizare a ghilimelelor simple:
// Ieșire: șir simplu
ecou „Șir simplu”;
// Ieșiri: Sunt aici
ecou „Sunt aici”;
// Ieșiri: Aceasta nu va insera: \ n o nouă linie
ecou "Aceasta nu va insera: \ n o linie nouă";
// Ieșire: Variabila $ exemplu nu va fi substituită nici
echo "Variabila $ exemplu nu va fi substituită nici"; Dacă un șir este încadrat între ghilimele duble ("), PHP recunoaște mai multe secvențe de evadare pentru caractere speciale și înlocuiește valoarea acestuia în locul unui nume variabil. trebuie să fie precedat de un caracter invers (\).

Iată un exemplu de utilizare a ghilimelelor duble:
// Ieșire: șir simplu
ecou „Șir simplu”;
// Ieșire: „Snowdrop” firmă
ecou "Firm \" Snowdrop \ "";
// Ieșire: Aceasta se va transforma într-o linie nouă
ecou "Aceasta va fi linie nouă \ n";
// Ieșire: Variabila va fi înlocuită
$ exemplu = "va fi înlocuit";
ecou „Variabila $ exemplu”; De asemenea, trebuie să ne amintim că secvența "\ n" (linie nouă), "\ r" (retur de transport) este pentru text simplu, nu pentru HTML. Deci, în browser nu veți vedea modificările (numai în codul sursă al paginii).

Să aflăm cât de repede sunt ghilimelele simple. Pentru măsurători, vom scrie un scurt script de testare și vom reține imediat că, dacă îl testați acasă, rezultatele care depind de hardware-ul computerului sau serverului dvs. vor fi diferite.
// Întoarceți marca de timp la începutul ciclului
$ start = microtime (adevărat);
// Creați o buclă pentru 1 milion de iterații
pentru ($ i = 0; $ i< 1000000; $i++) {
$ text = "Acesta este un șir de caractere";
}
// Calculați timpul petrecut
$ time = (microtime (true) - $ start); Rezultat: 0,09 secunde.

Dacă înlocuim ghilimelele simple cu ghilimele duble:
$ text = "Acesta este un șir de caractere"; Rezultatul va fi de 0,10 secunde.

După cum puteți vedea, când utilizați șiruri de text, diferența de timp de execuție este foarte mică, s-ar putea spune chiar că nu există deloc. Distracția începe atunci când încercăm să combinăm un șir și o variabilă.
$ text = "Iată șirul de caractere $ i"; sau
$ text = $ i. "Iată un șir de caractere"; Rezultatul aproximativ: 0,27 secunde.

Diferența este destul de tangibilă. Concatenarea și ghilimele duble afectează în mod clar performanța atunci când variabilele sunt adăugate la șir.

Când serverul procesează codul, acesta verifică întregul conținut al ghilimelelor duble pentru variabile, constante și multe altele. Dureaza. Și ceea ce este între ghilimele unice este procesat de server ca un text gata făcut și nu contează ce este acolo. Diferența dintre performanța ghilimelelor simple și duble este foarte nesemnificativă, dar dacă dezvoltați un proiect foarte încărcat, atunci câteva milisecunde salvate este deja o victorie.

Valorile tipului de șir sunt șiruri de text (șiruri pe scurt). Un șir este o secvență de zero sau mai multe caractere. Simbolurile includ litere, cifre, punctuație, caractere speciale și spații.

Un șir poate fi definit în patru moduri diferite:

  • ghilimele duble
  • ghilimele unice
  • sintaxa heredoc
  • sintaxa nowdoc

Șir citat dublu

Șir citat dublu:

Secvențele de evadare pot fi utilizate în șiruri de ghilimele duble. Secvența de control Sunt caractere speciale pentru formatarea textului. Următoarele secvențe de evacuare sunt disponibile în PHP:

Principala caracteristică a șirurilor citate dublu este capacitatea de a procesa variabile în cadrul șirurilor.


Semn de dolar: \ $ ";

Șirurile cuprinse între ghilimele duble pot conține caractere de ghilimelă simple:

Ecou "Citat unic:" ";

Șir între ghilimele (apostrofe)

Un singur șir citat:

$ str = "Șir"; ecou „O linie mare poate fi împărțită în mai multe linii mici pentru a ușura citirea.”;

Spre deosebire de șirurile citate dublu și sintaxa heredoc, variabilele și secvențele de evacuare (cu o singură excepție) incluse în ghilimele unice nu sunt procesate. Acest lucru înseamnă că acestea vor fi interpretate ca caractere șir normale:

$ num = 10; ecou "Număr: $ num
Semn de dolar: \ $ ";

Pentru a utiliza ghilimele simple într-un șir încadrat între ghilimele unice, trebuie să le scăpați cu o bară inversă (\ "). Dacă trebuie să scrieți înapoi barela în sine, trebuie să o copiați (\\):

Se utilizează ecou „În interiorul„ ghilimelelor „unice \”; ecou „Backslash: \\”;

Șirurile cuprinse între ghilimele unice pot conține ghilimele duble:

Ecou "Citat dublu:" ";

Sintaxa Heredoc

Sintaxa Heredoc este o modalitate alternativă de scriere a șirurilor.

Un șir definit cu ajutorul sintaxei Heredoc funcționează la fel ca un șir închis între ghilimele duble. Diferența dintre un Heredoc și un șir de ghilimele este că folosind Heredoc nu este nevoie să scapi de ghilimele duble.

Sintaxa Heredoc începe cu trei caractere<<< , после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. Pe loc identificatorul trebuie să fie urmat de o linie nouă, nu ar trebui să existe alte caractere, cu excepția unei linii noi după identificator, altfel va apărea o eroare. Urmează conținutul șirului în sine. După conținutul șirului, pe o linie separată, trebuie să existe un identificator de închidere (la fel ca după<<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:

<<

Sintaxa Nowdoc

Sintaxa Nowdoc, la fel ca Heredoc, este un mod alternativ de a scrie șiruri.

Un șir definit prin utilizarea sintaxei Nowdoc funcționează la fel ca un șir închis între ghilimele unice. Diferența dintre Nowdoc și un singur șir citat este că folosind Nowdoc nu este nevoie să scape de ghilimele unice.

Sintaxa Nowdoc este similară cu Heredoc, cu singura diferență că identificatorul de deschidere trebuie să fie inclus între ghilimele unice:

$ num = 10; ecou<<<"some_id" Число: $num some_id;

Manipularea variabilelor în șiruri

Există două tipuri de sintaxă pentru tratarea variabilelor în șiruri: simpluși dificil.

Sintaxă simplă- atunci când numele variabilei este specificat pe linie ca atare.

Când interpretul întâlnește un semn de dolar, începe să verifice secvențial dacă toate caracterele ulterioare sunt caractere valide în numele variabilei. Astfel, pentru a forma numele variabilei corecte, captează cât mai multe caractere posibil:

$ str = "Lumea!"; ecou „Hello $ str”;

Sintaxă complexă Este atunci când numele variabilei este închis între paranteze.

Deoarece, pentru a procesa o variabilă într-un șir, interpretul captează cât mai multe caractere posibil, există situații în care interpretul nu este capabil să determine în mod independent unde se termină numele variabilei:

$ sport1 = "prin voință"; $ sport2 = "picior"; ecou „Îmi plac $ sport1ball și $ sport2ball”;

În acest caz, rezultatul dorit nu va fi atins, deoarece interpretul va considera $ sport1 ca parte a numelui variabilei $ sport1ball, care nu există.

Pentru a spune în mod explicit interpretului unde se termină numele variabilei, trebuie să includeți numele variabilei în paranteze:

$ sport1 = "prin voință"; $ sport2 = "picior"; ecou „Îmi place mai mult ($ sport1) și ($ sport2) mai mult”;

Semnul de dolar poate fi plasat fie înainte, fie după bretele:

$ sport1 = "prin voință"; $ sport2 = "picior"; ecou „Îmi place $ (sport1) mare și ($ sport2) mare”;

Concatenare

Concatenarea este concatenarea a două sau mai multe șiruri într-un singur șir mare. Concatenarea se face folosind operatorul de concatenare -. (punct). La concatenare, fiecare linie ulterioară este atașată la sfârșitul celei anterioare:

O valoare de orice tip care este concatenată cu un șir va fi implicit convertită într-un șir, apoi se va efectua concatenarea:

"; ecou" Număr: ". 1;?>

Nu sunt un expert în programarea PHP, dar sunt puțin confuz cu privire la motivele pentru care văd un cod în PHP cu un șir încadrat între ghilimele simple și uneori duble.

Știu doar că în .NET sau C, dacă este între ghilimele unice, înseamnă că este un caracter, nu un șir.

Soluţie

Ce ar trebui sa stii

$ a = "nume"; $ b = "$ a mea"; == "numele meu" $ c = "$ meu a"; ! = "numele meu"

În PHP, oamenii folosesc ghilimele simple pentru a defini un șir constant ca „a”, „numele meu”, „abc xyz” în timp ce folosesc ghilimele duble pentru a defini un șir care conține un identificator precum „a $ b $ c $ d”

Și încă ceva

Ecou „numele meu”;

mai rapid decât

Ecou „numele meu”;

Ecou „al meu”. $ a;

mai incet decat

Ecou „$ a meu”;

Acest lucru este valabil pentru celelalte șiruri utilizate.

În PHP, textul citat simplu este tratat ca o valoare șir, iar textul citat dublu va analiza variabilele prin înlocuirea și procesarea valorii acestora.

$ test = "variabilă"; ecou „Hello Mr $ test”; // ieșirea ar fi: Hello Mr variabil ecou "Hello Mr $ test"; // rezultatul ar fi: Bună ziua dl $ test

Aici, ghilimelul dublu analizează valoarea, iar ghilimelul unic este tratat ca o valoare șir (fără a analiza variabila $ test.)

Ambele tipuri de caractere imbricate sunt șiruri. Este convenabil să utilizați un tip de cotație pentru încheierea unui alt tip de cotație. "" ", precum și" "". Cea mai mare diferență între tipurile de ghilimele este că referințele la identificatorii cuibăriți sunt înlocuiți în ghilimele duble, nu în ghilimele unice.