az internet ablakok Android

PHP idézetek, idézetek egy, kettős, árnyékolást. Mi a különbség az egy- és kettős idézetek között a PHP-ben? Dupla idézetek a PHP-ben

A karakterlánc karakterkészlet. A PHP-ben a szimbólum megegyezik a bájtokkal, ez azt jelenti, hogy pontosan 256 különböző karakter lehet. Ez azt is jelenti, hogy a PHP-nek nincs beépített támogatása az Unicode "a. Néhány Unicode Support" az UTF8_ENCODE () és az UTF8_DECODE () funkciókat.

Megjegyzés: Nincs probléma, ha a karakterlánc nagyon magas. Gyakorlatilag nincs korlátozások a PHP által kiszabott vonalak méretére, így nincs szükség arra, hogy aggódjunk a hosszúságuk miatt.

Szintaxis

    A karakterlánc három különböző módon határozható meg.

Egyedülálló idézetek

A karakterlánc megítélésének legegyszerűbb módja az, hogy egy idézőjelekre (szimbólumra "kell lezárni.

Ahhoz, hogy egyetlen idézeteket használjon a vonalon belül, mint sok más nyelven, azt az inverz kaszát szimbóluma (\\), azaz árnyékolja. Ha a fordított süllyedő rohadt el kell mennie az egyetlen idion előtt, vagy a sor végén kell lennie, meg kell ismételnie. Kérjük, vegye figyelembe, hogy ha megpróbálja megvédeni a többi karaktert, akkor a fordított mosogató funkció is kinyomtatható! Tehát általában nincs szükség a fordított ferde vonal védelmére.

Megjegyzés: A PHP 3-ban ebben az esetben az E_NOTICE szintű üzenet kerül kiadásra.

MEGJEGYZÉS: Két másik szintaxissal ellentétben a változók és árnyékolási szekvenciák az egyetlen idézőjelben bekapcsolt vonalakban tapasztalt speciális karakterek esetében nem kerülnek feldolgozásra.

Echo "Ez egy egyszerű karakterlánc"; Echo "Egy új vonal szimbólumát is beillesztheti oly módon, hogy normális legyen"; // Will Out: Miután Arnold azt mondta: "Én" visszajövök "visszhangzik", miután Arnold azt mondta: "I \\" ll vissza ""; // eltávolítás: eltávolította c: \\ *. *? Echo "eltávolította C: \\\\ *. *?"; // eltávolítás: eltávolította c: \\ *. *? Echo "eltávolította C: \\ *. *?"; // Will Out: Nem fogja beilleszteni: \\ n új sor visszhang "Nem fog beilleszteni: \\ n új stringet"; // Will Out: $ expand változók is $ vagy nem helyettesítik az Echo "$ expand változók is, akár nem helyettesítettek";

Kettős idézetek

Ha a karakterlánc kettős idézőjelben van ("), a PHP nagyobb számú vezérlőszekvenciát ismertet a speciális karakterekhez:

11-1. Táblázat. Vezérlési szekvenciák

Ismételjük, ha más karaktert szeretne szaporítani, a fordított mosogató funkciót is kinyomtatják!

De a sorok legfontosabb tulajdonsága a kettős idézetekben a változók feldolgozása. További részletek: Row feldolgozás.

Heredoc.

A húrok meghatározásának másik módja a Heredoc-Syntax ("

A záró azonosítónak meg kell kezdődnie a karakterlánc első oszlopában. Ezenkívül az azonosítónak meg kell felelnie ugyanazokkal az elnevezési szabályoknak, mint a PHP-ben lévő összes többi címkével: csak alfanumerikus karaktereket és aláírási jelet tartalmaz, és nem merpucként vagy aláhúzással kell kezdődnie.

Figyelem

Nagyon fontos megjegyezni, hogy a záró azonosítóval rendelkező karakterlánc nem tartalmaz más karaktereket, kivéve, esetleg pontosvessző (;). Ez azt jelenti, hogy az azonosítót nem szabad beírni egy francia bekezdéssel, és hogy a pontosvessző előtt vagy után nem lehet rés vagy fülek. Fontos továbbá megérteni, hogy az első karakter a záró azonosítónak az operációs rendszerben meghatározott új karakterlánc szimbólumának kell lennie. Például Macintosh-on ez.

Ha ez a szabály megszakadt, és a záró azonosító nem "tiszta", úgy vélik, hogy a záró azonosító hiányzik, és a PHP továbbra is keresni fog. Ha ebben az esetben a helyes záró azonosító nem található, akkor hibát okoz a forgatókönyv végén lévő karakterláncszámmal.

A Heredoc-szöveg ugyanúgy viselkedik, mint egy sor kettős idézőjelben, míg nincs nekik. Ez azt jelenti, hogy nem kell pajzd az idézeteket a Heredoc-ban, de még mindig használhatja a fenti vezérlési szekvenciákat. A változókat feldolgozzák, de összetett változók használata a heredoc belül is figyelmesnek kell lennie, mint a vonalakkal való munka.

11-2. Példa. Példa a heredoc karakterlánc meghatározására

$ Str \u003d.<<foo \u003d "foo"; $ this-\u003e bar \u003d tömb ("BAR1", "BAR2", "BAR3"); )) $ foo \u003d új foo (); $ NAME \u003d "MINE"; Visszhang.<<foo. Most hozza ($ foo-\u003e bar). Ez az "A" címet ki kell adnia: \\ x41 eot;

MEGJEGYZÉS: A HEREDOC támogatás hozzá lett adva a PHP 4-hez.

A változók feldolgozása

Ha a karakterlánc dupla idézőjelben van, vagy a heredoc, a belsejében lévő változók feldolgozásra kerülnek.

Kétféle szintaxis van: egyszerű és összetett. Az egyszerű szintaxis könnyebb és kényelmes. Lehetővé teszi a változó feldolgozás, a tömb (tömb) vagy az objektum tulajdonságainak értékét (objektum) értékét.

A komplex szintaxist a PHP 4-be vezettük be, és a kifejezést körülvevő göndör konzolokon lehet felismerni.

Egyszerű szintaxis

Ha a tolmács megfelel a dollár jel ($), akkor a lehető legtöbb karaktert rögzítheti a megfelelő változó nevének kialakításához. Ha pontosan meg akarja határozni a név végét, lezárja a változó nevét a göndör zárójelben.

$ sör \u003d "Heineken"; Echo "$ sör" íze nagyszerű "; // működik," "Ez a helytelen karakter az Echo nevének nevét" ő ivott néhány $ Beers "változó; // nem működik, az "S" hűséges karakter az ECHO változó névnek "ő ivott néhány $ (sör) s"; // echo "ivott néhány ($ sör) s"; // munkák

A tömbelem (tömb) vagy objektum tulajdonság (objektum) is feldolgozható. A tömbindexekben a záró négyszögletes konzol (]) az index meghatározásának végét jelöli. Az objektum tulajdonságai esetében ugyanazok a szabályok érvényesek az egyszerű változókra, bár lehetetlen a trükkre, mint a változókra.

// Ezek a példák kifejezetten az // vonalakon belüli tömbök használatáról szólnak. A sorokon kívül mindig írja be a karakterláncokat // a tömböt idézőjelekben, és ne használja a külső húrokat (zárójeleket). // Mutassa be az összes hibát hiba_reporting (e_all); $ Fruits \u003d tömb ("eper" \u003d\u003e "piros", "banán" \u003d\u003e "sárga"); // Működik, de észrevétszik, hogy a vonal idézőjelei egy másik visszhangban dolgozik "A banán $ gyümölcs."; // echo "A banán ($ gyümölcs [" banán "])."; // Működik, de PHP, az alábbiak szerint az első keresés // állandó banán. Echo "A banán ($ gyümölcs)."; // nem működik, használjon göndör zárójeleket. Ez feldolgozási hibát okoz. Echo "A banán $ gyümölcs [" banán "]."; // echo "A banán" működik. $ Gyümölcsök ["banán"]. "."; // Runn Echo "Ez a tér $ Square-\u003e Szélességmérők széles."; // Nem működik. A megoldáshoz lásd: Komplex szintaxis. Echo "Ez a tér $ négyzet-\u003e szélessége 00 centiméter széles.";

Valami nehezebb, komplex szintaxist kell használnia.

Komplex (figurált) szintaxis

Nehéznek hívják, mert nehéz megérteni, de azért, mert lehetővé teszi, hogy komplex kifejezéseket használjon.

Tény, hogy engedélyezheti az értéket a név nevében a karakterláncban a szintaxissal. Csak ugyanúgy írja le a kifejezést, mint a vonalon kívül, majd zárja le (és). Mivel nem tudsz megvédeni "(", ez a szintaxis csak akkor kerül felismerésre, ha a $ -nak közvetlenül kell lennie (. (Használja "(\\ $" vagy "($" ($ ", hogy megjelenjen a" ($ "). Számos magyarázó példa:

// Mutassa be az összes hibát hiba_reporting (e_all); $ Great \u003d "fantasztikus"; // nem működik, eltávolítja: Ez (fantasztikus) echo "Ez ($ great)"; // munkák, visszavonás: ez fantasztikus echo "Ez ($ great)"; Echo "Ez $ (nagyszerű)"; // fut az echo "Ez a szélesség négyzet ($ Square-\u003e szélesség) 00 centiméter."; // Ucho futtatása "Ez működik: ($ ARR)"; // Ugyanazon az okból helytelen, mivel a $ foo helytelenül ki van kapcsolva // sor. Más szóval, még mindig működik, //, de mivel a PHP először keres egy Foo konstansot, hívja // e_notice szint hiba (határozatlan konstans). Echo "Ez rossz: ($ ARR)"; // működik. Multidimenzionális tömbök használata esetén a belső // sorok mindig használja az Echo göndör zárójeleket "Ez működik: ($ ARR [" foo "])"; // működik. Echo "Ez működik:". $ ARR ["foo"]; Echo "Még írhat ($ obj-\u003e értékek-\u003e név)"; Echo "Ez a $ névnév értéke: ($ ($ name))";

Hozzáférés a szimbólumhoz és annak változásához

A vonalakban lévő szimbólumok használhatók és módosíthatók az eltolásuk meghatározásával a karakterlánc kezdetéhez viszonyítva, nullától kezdve, göndör zárójelben a sor után.

MEGJEGYZÉS: A hátrafelé kompatibilitás biztosítása érdekében még mindig képesek használni a tömb tartóját ugyanazon célokra. Azonban a PHP 4-el kezdődően ez a szintaxis nem kívánatos használni.

11-3. Példa. Több példa a karakterláncra

// az első sor karakter megszerzése $ str \u003d "Ez egy teszt."; $ első \u003d $ str (0); // a harmadik karaktervonal megszerzése $ Harmadik \u003d $ STR (2); // a sor utolsó karakterének megszerzése $ str \u003d "Ez még mindig teszt."; $ Utolsó \u003d $ str (strlen ($ str) -1); // a sor utolsó szimbólumának megváltoztatása $ str \u003d "Nézd meg a tengertől"; $ Str (strlen ($ str) -1) \u003d "i";

Hasznos funkciók és üzemeltetők

A sorok kombinálhatók az operátorral. "". " (pont). Kérjük, vegye figyelembe, hogy a "+" addíciós üzemeltető nem működik itt. További információért lásd: String operátorok.

A karakterláncok módosításához számos hasznos funkció van.

A fő funkciók fejezetben leírt string függvények, a funkciók a reguláris kifejezések speciális keresésre és cseréje (két részből áll: perl és POSIX advanced).

Vannak funkciók is URL-húrok, és funkciók a titkosítási / dekódolási karakterláncokhoz (mcrypt és mhash).

Végül, ha még mindig nem találta meg, amit keresett, lásd még a szimbolikus típusú funkciókat is.

Átvitat a karakterláncra

Az értéket egy karakterláncra konvertálhatja a karakterlánc (string) vagy a Strval () függvény használatával. Kifejezésekben, ahol a karakterlánc szükséges, az átalakítás automatikusan bekövetkezik. Ez akkor történik, ha az ECHO () vagy a nyomtatás () függvényeket használja, vagy ha összehasonlítja a karakterlánccsík értékét. A típusok szakaszainak olvasása és a típusok manipulálása érthetőbbé teszi a következőt. Lásd még Settype ().

Boolean (Boolean) Az igaz értéke az "1" karakterláncba alakul, és a FALSE értéke "" (üres karakterlánc). Ilyen módon az értékeket mindkét irányba konvertálhat - a logikai típusból egy karakterláncba és fordítva.

Az egész számot (egész számot) vagy egy lebegőpontszámot (úszó) átalakítják a számokból álló számmal (beleértve a lebegőpontos számok diplomáját).

A tömböket mindig a "tömb" karakterláncra konvertálják, így nem lehet megjeleníteni a tömb (tömb) tartalmát az Echo () vagy a Nyomtatás () segítségével, hogy megtudja, mit tartalmaz. Az elem megtekintéséhez valamit kell tennie, mint egy visszhang $ ARR ["FOO"]. Lásd az alábbi tippeket az összes tartalom megjelenítéséhez / megtekintéséhez.

Az objektumok mindig átalakulnak az "objektum" karakterláncba. Ha meg szeretné mutatni az objektum (objektum) objektumtagjának értékét a hibakeresés érdekében, olvassa el a következő bekezdéseket. Ha szeretné megkapni a kívánt objektum osztályának nevét, használja a Get_Class ().

Erőforrások mindig alakítjuk húrok a „Resource ID # 1” szerkezet, ahol 1 egy egyedi erőforrás szám (Resource) ráruházott PHP végrehajtás során. Ha erőforrás-típust szeretne kapni, használja.

Null mindig üres karakterláncgá alakul.

Amint fentebb látható, a tömbök, tárgyak vagy erőforrások kimenete nem nyújt Önnek hasznos információt az értékekről. A hibakeresési értékek megjelenítésének megfelelő módja a Print_R () és Var_dump () funkciók használata.

A PHP értékeket az állandó tárolóhoz is konvertálhatja. Ezt a módszert sorozódásnak nevezik, és a serialize () függvény segítségével végezhetjük. Ezenkívül, ha van WDDX támogatása a PHP beállításban, akkor a PHP értékeket az XML szerkezetben sorolja fel.

Soros konverzió számokban

Ha a karakterlánc numerikus értékként kerül felismerésre, akkor a kapott érték és a típus az alábbiak szerint van meghatározva.

A karakterlánc lebegőként kerül felismerésre, ha a karaktereket tartalmazza. "," E "vagy" E ". Ellenkező esetben egésze lesz.

Az értéket a vonal kezdeti része határozza meg. Ha a karakterlánc helyes numerikus értékkel kezdődik, akkor ezt az értéket használják. Ellenkező esetben az érték 0 (nulla) lesz. A zsíros numerikus érték egy vagy több számjegy (amely tizedespontot tartalmazhat), a bemutatott jel kérésére, majd az opcionális mutató. A diploma jelzője "E" vagy "E", az azt követő egy vagy több számmal.

$ Foo \u003d 1 + "10,5"; // $ foo float (11.5) $ foo \u003d 1 + "-1.3E3"; // $ foo float (-1299) $ foo \u003d 1 + "Bob-1.3e3"; // $ foo egy egész szám (1) $ foo \u003d 1 + "bob3"; // $ foo egy egész szám (1) $ foo \u003d 1 + "10 kis sertés"; // $ foo integer (11) $ foo \u003d 4 + "10.2 kis piggies"; // $ foo úszó (14.2) $ foo \u003d "10,0 sertés" + 1; // $ foo úszó (11) $ foo \u003d "10,0 sertés" + 1.0; // $ foo float (11)

A konverzióra vonatkozó további információkért lásd a Unix Sttod (3) dokumentációs részét.

Ha meg akarja vizsgálni a partíció példáit, akkor másolhatja és beillesztheti, és a következő sor, hogy megnézze, mi történik:

Echo "\\ $ foo \u003d\u003d $ foo; típusa:". GETTYPE ($ foo). "
\\ n ";

Ne várjon, hogy egy szimbólumkódot kapjon úgy, hogy egy egész számra konvertálja (például, például c) pontban. A karakterek kódolásához és hátra történő konvertálásához használja az ord () és a

Nem vagyok szakértő a PHP programozásában, de egy kicsit megzavarom nekem, miért látok egy kódot PHP-ben egy olyan karakterláncban, amely egy, és néha kettős idézőjelben lezárult.

Tudom, hogy a v.net vagy a C nyelv, ha egy idézőjelben van, akkor ez azt jelenti, hogy ez egy szimbólum, nem egy karakterlánc.

Döntés

Amit tudnod kell

$ A \u003d "NAME"; $ B \u003d "My $ A"; \u003d\u003d "Saját név" $ C \u003d "My $ A"; ! \u003d "A nevem"

A PHP, az emberek használni az aposztróf jelet, hogy meghatározza egy konstans szöveget, például „a”, „My name”, „ABC XYZ” dupla idézőjeleket, hogy meghatározzuk tartalmazó karakterlánc egy azonosítót, például az „A $ B $ C $ D ",

És egy másik dolog,

Echo "nevem";

gyorsabb, mint

Echo "nevem";

Echo "az én". $ a;

lassabban mint

Echo "én $ a";

Ez igaz az egyéb sorokhoz.

A PHP-ben az egyes idézetek szövegét sztring értéknek tekintik, és a kettős idézőjelben lévő szöveg elemzi a változókat az értékük cseréjével és feldolgozásával.

$ teszt \u003d "változó"; Echo "hello mr $ teszt"; // A kimenet: Hello Mr változó visszhang "Hello Mr $ teszt"; // A kimenet: Hello MR $ teszt

Itt a kettős idézet elemzi az értéket, és az egyes idézet sztring értéknek tekinthető (anélkül, hogy egy $ tesztváltozót elemezne.)

Mindkét típusú beágyazott karakter sorok. Az egyik típusú idézetek kényelmesek a másik típusú idézet megkötéséhez. "" "" "És" "", a legnagyobb különbség az idézetek típusai között, hogy a beágyazott azonosítókra való hivatkozások cseréje a kettős idézetekben, és nem egyetlen idézetben.

Megjegyzés: A PHP 7.0.0 64 bites platformokon nincsenek elérhető korlátozásoknak karakterlánc hosszát, a 32 bites rendszerek és a korábbi PHP verziók, vonalakat nem lehet több, mint 2 GB (2147483647 bájt).

Szintaxis

A karakterlánc négy különböző módon határozható meg:

  • Egyedülálló idézetek
  • Kettős idézetek
  • NowDoc Syntax (a PHP 5.3.0-vel kezdődően)

Egyedülálló idézetek

A karakterlánc azonosításának legegyszerűbb módja az, hogy egy idézőjelekre (szimbólum " ).

A karakterlánc belsejében egyetlen idézeteket használjon, fordított réteggel ( \ ). Ha vissza kell írnia a hátrameneti fekvést, ismételje meg ( \\ ). A fordított réteg alkalmazásának minden más esetét hagyományos szimbólumként fogják értelmezni: Ez azt jelenti, hogy ha más vezérlőszekvenciákat próbál használni, például R. vagy N.Származnak, mert bármilyen különleges viselkedés helyett.

visszhang. "Ez egy egyszerű karakterlánc";

visszhang. - Szúrásba is behelyezhetsz
az új vonal szimbóluma
ez normális"
;

// Megjeleníti: Miután Arnold azt mondta: "Én vissza fogok térni"
visszhang. "Egyszer egy alkalommal Arnold azt mondta:" Én leszek vissza "";

Visszhang. - Eltávolítottál C: \\\\ *. *?;

// Megjeleníti: eltávolította a C: \\ *. *?
echo "eltávolította C: \\ *. *?" ;

// megjeleníti: Nem telepíthető: \\ n új sor
visszhang. "Nem lesz telepítve: \\ n Új karakterlánc";

// Megjeleníti: Változók $ Expand, akár $ sem kibontakozik
visszhang. "$ Expand változók is $ vagy nem kibontakoznak";
?>

Kettős idézetek

Ha a karakterlánc kettős idézőjelben van ("), a PHP felismeri a speciális karakterek következő vezérlőszekvenciáit:

Vezérlési szekvenciák
Sorrend Érték
N. Új vonal (LF vagy 0x0a (10) ASCII-ban)
R. visszatérő kocsi (CR vagy 0x0D (13) az ASCII-ben)
T. vízszintes fül (HT vagy 0x09 (9) ASCII-ban)
V. függőleges fül (vt vagy 0x0b (11) ASCII esetén) (PHP 5.2.5)
E. escape Sign (ESC vagy 0X1B (27) ASCII esetén) (PHP 5.4.4)
F. oldaltovábbítás (FF vagy 0x0C (12) ASCII-ban) (PHP 5.2.5)
\\ fordított oblique rohadt
\$ dollár jel
\" kettős idézetek
\{1,3} A szimbólumok sorozatát megfelelő reguláris kifejezés a szimbólum oktális szám rendszer, amely csendben túlcsordul, hogy beilleszkedjen bájt (azaz „\\ 400” \u003d\u003d\u003d „\\ 000”)
X (1,2) A szimbólum rendszeres expressziójának megfelelő karakterek sorrendje egy hexadecimális számrendszerben
\\ U (+) Az Unicode szimbólum rendszeres expressziójának megfelelő karakterek sorrendje, amely az UTF-8 nézetben található karakterláncban jelenik meg (hozzáadva a PHP 7.0.0-hez)

Mint egy idézőjelben kötött karakterláncban, bármely karakter szűrése is megjeleníti a szűrőszimbólumot is. A PHP-ig 5.1.1, fordított fekvés \\ ($ var) Nem nyomtatott.

Heredoc.

A húrok meghatározásának harmadik módja a Heredoc-Syntax használatát: <<< . A kezelő után meg kell adnia az azonosítót, majd a sorfordítást. Ezután maga a karakterlánc megy, majd ugyanaz az azonosító, amely bezárja a betétet.

Vonal kellene Kezdje a záró azonosítóval, azaz. Az első sorban kell állnia. Ezenkívül az azonosítónak meg kell felelnie ugyanazon szabályoknak, mint a PHP összes többi címkéje: csak alfanumerikus karaktereket tartalmaz, és egy aláhúzott jelet tartalmaz, és nem kezdődik a számokkal (az aláhúzás megengedett).

Figyelem

Nagyon fontos megjegyezni, hogy a záró azonosítóval rendelkező sor nem tartalmazhat más karaktert, kivéve a pontosvesszőt ( ; ). Ez azt jelenti, hogy az azonosító nem szabad bevezetni a francia bekezdéssel És hogy a fülek előtt vagy után nem lehetnek rések vagy fülek. Fontos továbbá megérteni, hogy az első karakter a záró azonosítónak az operációs rendszerben meghatározott új karakterlánc szimbólumának kell lennie. Például a Unix rendszerekben, beleértve a Macos-t is, ez N.. A záró azonosító után egy új vonal is elkezdődik azonnal.

Ha ez a szabály megszakadt, és a záró azonosító nem "tiszta", úgy vélik, hogy a záró azonosító hiányzik, és a PHP továbbra is keresni fog. Ha ebben az esetben a helyes záró azonosító nem található, akkor egy elemzési hibát okoz a szkript végén lévő karakterláncszámmal.

# 1. példa Példa a helytelen szintaxisra

osztályfoo (
Nyilvános $ bar \u003d<<rúd
Eot;
// A záró azonosító előtti cina elfogadhatatlan
}
?>

# 2. példa a helyes szintaxisra

osztályfoo (
Nyilvános $ bar \u003d<<rúd
Eot;
}
?>

A Heredoc nem használható az osztály mezők inicializálására. A PHP 5.3-el indulva ez a korlátozás csak a Heredoc-t tartalmazza, amely önmagában van.

A Heredoc-szöveg ugyanúgy viselkedik, mint egy sor kettős idézőjelben, míg nincs nekik. Ez azt jelenti, hogy nem kell pajzd az idézeteket a Heredoc-ban, de még mindig használhatja a fenti vezérlési szekvenciákat. A változókat feldolgozzák, de összetett változók használata a heredoc belül is figyelmesnek kell lennie, mint a vonalakkal való munka.

# 3. példa Példa a meghatározásra itt

$ Str \u003d.<<Minta karakterlánc,
több vonalat lefedve
heredoc szintaxis segítségével.
EOD;

Osztályfoo.
{
VAR $ foo;
VAR $ bar;

Funkció __construct ()
{
$ Ez -\u003e foo \u003d "foo";
$ Ez -\u003e
}
}

$ foo \u003d új foo ();
$ NAME \u003d "NAME";

visszhang.<<A nevem "$ név". I írom $ foo -\u003e foo .
Most kivesszem
($ Foo -\u003e bar [1]) .
Ennek eltávolítja az "A" címet: \\ x41
Eot;
?>

A nevem "név". Nyomtatom foo. Most elmozdultam a BAR2-et. Ez eltávolítja az "A" címet: a

Lehetőség van a Heredoc Syntax használatára az adatátvitelre a funkció érveken keresztül:

Az 5.3.0-es verzióból kiindulva lehetséges az osztály statikus változók és tulajdonságai / állandóságai a heredoc szintaxis segítségével:

5. példa Heredoc használata a statikus változó előfordulási gyakoriságához

// statikus változók
funkció Foo ()
{
Statikus $ bar \u003d<<Itt nincs semmi ...
Címke;
}

// állandó / osztály tulajdonságai
osztályfoo.
{
CONST BAR \u003d.<<Példa az állandó használatára
Foobar;

Nyilvános $ baz \u003d<<Példa a mező használatára
Foobar;
}
?>

A PHP 5.3.0-vel kezdődően a Heredoc azonosítót kettős idézőjelekkel is körülválaszthatja:

NowDoc.

A NowDoc ugyanaz az egyetlen idézőjelben, mint a Sysdoc a kettős idézőjelek számára. MostDoc úgy néz ki, mint a heredoc, de benne nincs helyettesítés. Ez a design ideális a PHP-kód vagy más nagy szövegblokkok bevezetéséhez anélkül, hogy az árnyékolás szükségessége lenne. Ebben egy kicsit olyan, mint az SGML design Az a tény, hogy kijelenti a feldolgozásra szánt szövegblokkot.

A NowDoc ugyanazt a szekvenciát jelzi <<< amelyet a heredoc-ban használnak, de az azonosítót követő azonosító, például egyetlen idézőjel, például, <<<"EOT" . A HEREDOC azonosítók számára működő valamennyi feltétel a NowDoc esetében is érvényes, különösen azok a záró azonosítóhoz tartoznak.

A # 7 példa egy példa a NowDoc használatára

visszhang.<<<"EOD"
A szöveg példája
több vonal elfoglalása
a NowDoc Syntax használatával. Az inverz keverékeket mindig szó szerint feldolgozzák,
például, \\\\ és \\ ".
EOD;

A példa eredménye:

Példa egy olyan szövegre, amely több sort foglal el a NowDoc szintaxis segítségével. Az inverz stroke-t mindig szó szerint feldolgozzák, például, \\\\ és \\ ".

# 8. példa NowDoc String idézési példa változókkal

/ * Bonyolultabb példa a változókkal. * /
osztályfoo.
{
Nyilvános $ foo;
Nyilvános $ bar;

Funkció __construct ()
{
$ Ez -\u003e foo \u003d "foo";
$ Ez -\u003e Bar \u003d tömb ("BAR1", "BAR2", "BAR3");
}
}

$ foo \u003d új foo ();
$ NAME \u003d "NAME";

visszhang.<<<"EOT"
A nevem "$ név". Írok $ foo-\u003e foo.
Most írom ($ foo-\u003e bar).
Ez nem vonhatja vissza az "A" címet: \\ x41
Eot;
?>

A példa eredménye:

A nevem "$ név". Írok $ foo-\u003e foo. Most írom ($ foo-\u003e bar). Ez nem vonhatja vissza az "A" címet: \\ x41

# 9. példa Példa a statikus adatok felhasználására

osztályfoo (
Nyilvános $ bar \u003d<<<"EOT"
rúd
Eot;
}
?>

Megjegyzés:

A PHP 5.3.0 támogatása hozzá lett adva.

A változók feldolgozása

Ha a karakterlánc kettős idézőjelben van megadva, vagy a heredoc, a belsejében lévő változók feldolgozása.

Kétféle szintaxis van: egyszerű és összetett. Az egyszerű szintaxis könnyebb és kényelmes. Lehetővé teszi a változó feldolgozás, a tömb értékét ( sor.) vagy objektum tulajdonságai ( tárgy.) minimális erőfeszítéssel.

A komplex szintaxis meghatározható a kifejezést körülvevő göndör zárójelekben.

Egyszerű szintaxis

Ha a tolmács megfelel a dollár jelnek ( $ ), annyi karaktert rögzít, mivel a változó helyes nevét képezi. Ha pontosan meg akarja határozni a név végét, lezárja a változó nevét a göndör zárójelben.

$ juice \u003d "alma";

echo "ivott néhány $ juice juice." . Php_eol;

// tévesen. Az "S" egy hűséges karakter a változó nevéhez, de a változó neve $ juice.
echo "$ gyümölcslevet ivott. ;

// helyesen. A változó név szigorúan felsorolt \u200b\u200bvége zárójelekkel:
echo "ivott néhány gyümölcslevet $ (juice) s." ;
?>

A példa eredménye:

Néhány almáslét ivott. Néhány gyümölcslevet ivott. Alma almából készült gyümölcslevet ivott.

A tömbelem hasonlóan feldolgozható ( sor.) vagy objektum tulajdonság ( tárgy.). A tömb záró négyzetkötő indexeiben ( ] ) Jelzi az index meghatározásának végét. Az objektum tulajdonságai esetében ugyanazok a szabályok érvényesek az egyszerű változókra.

# 10 példa Példa Egyszerű szintaxis

definiálja ("Koolaid", "Koolaid1");
$ juices \u003d tömb ("alma", "narancs", "Koolaid1" \u003d\u003e "lila");

echo "Néhány $ jices [0] gyümölcslé ivott. . Php_eol;
echo "Néhány $ jiices [1] lé ivott. . Php_eol;
echo "egy $ gyümölcslevet ivott [koolaid1] juice." . Php_eol;

osztályú emberek (
Nyilvános $ John \u003d "John Smith";
Nyilvános $ Jane \u003d "Jane Smith";
Nyilvános $ Robert \u003d "Robert Paulsen";

Nyilvános $ Smith \u003d "Smith";
}

$ emberek \u003d új emberek ();

echo "$ emberek -\u003e John ivott néhány $ jices [0] juice." . Php_eol;
echo "$ People -\u003e John, aztán azt mondta Hello to $ People -\u003e Jane." . Php_eol;
echo "$ People -\u003e John" felesége üdvözölte $ People -\u003e Robert. "PHP_EOL;
echo "$ emberek -\u003e Robert üdvözölte a két dolláros embert -\u003e Smiths." ; // nem működik
?>

A példa eredménye:

Néhány almáslét ivott. Néhány narancslevet ivott. Néhány lila gyümölcslét ivott. John Smith néhány almáslét ivott. John Smith azt mondta Hello-t Jane Smithnek. John Smith felesége üdvözölte Robert Paulsen-t. Robert Paulsen üdvözölte a kettőt.

PHP 7.1.0 Hozzáadott támogatás negatív Numerikus indexek.

# 11 negatív numerikus indexek

$ String \u003d "string";
visszhang. "Az index -2 szimbólum egyenlő$ String [- 2]. ", PHP_EOL;
$ string [- 3] \u003d "O";
visszhang. "A szimbólum megváltoztatása -3 az" O "oldalon a következő karakterláncot adja meg:$ String. ", Php_eol;
?>

A példa eredménye:

Az index -2 szimbólum n. A szimbólum megváltoztatása a -3 pozícióban az "O" az alábbi sort ad: erős

Valami összetettebb, komplex szintaxist használjon.

Komplex (figurált) szintaxis

Nehéznek hívják, mert nehéz megérteni, de azért, mert lehetővé teszi, hogy komplex kifejezéseket használjon.

Bármilyen skalárváltozó, egy tömbelem vagy objektum tulajdonság jelenik meg egy karakterláncban, amelyet a vonalban lehet bemutatni a szintaxisban. Csak írja le a kifejezést, valamint a vonalon kívül, majd írja be azt { és } . Amennyiben { Nem lehet árnyékolni, ez a szintaxis csak akkor kerül felismerésre, ha $ Közvetlenül kell lennie { . Használat {\$ nyomtatni {$ . Számos magyarázó példa:

// mutasd meg az összes hibát
error_reporting (e_all);

$ Great \u003d "nagyszerű";

// nem működik, megjeleníti: ez (nagyszerű)
echo "Ez ($ great)";

// működik, megjeleníti: nagyszerű
echo "Ez ($ great)";

// munkák
visszhang. "Ez a szélesség négyzet($ Square -\u003e szélesség) 00 centiméter. ";

// Works, az idézőjelek mellékelt kulcsok, csak az ábra szerinti tartós szintaxissal dolgoznak
echo "Ez működik: ($ ARR [" billentyű "])";

// munkák
echo "működik: ($ ARR [4] [3])";

// hibás ugyanazon okból, mint a $ foo kívül
// sorok. Más szóval, továbbra is működik,
//, de mivel a PHP először keres egy foo konstansot, ez okoz
// ERROR LEVEL E_NOTICE (határozatlan állandó).
visszhang. "Nem helyes:($ ARR [foo] [3]) ";

// működik. Multidimenziós tömbök használatakor
// sorok mindig göndör zárójeleket használnak
echo "működik: ($ ARR [" foo "] [3])";

// működik.
echo "Ez működik:". $ ARR ["foo"] [3];

visszhang. "Ez is működik:($ Obj -\u003e értékek [3] -\u003e név) ";

visszhang. "Ez a nevű változó értéke$ NAME: ($ ($ NAME)) ";

visszhang. "Ez a név szerinti változó értéke, amely visszaadja a GetName () funkciót:($ (GetName ())) ";

visszhang. "Ez a név szerinti változó értéke, amely visszaadja \\ $ Object-\u003e GetName ():($ ($ Object -\u003e getname ())) ";

// nem működik, megjeleníti: Ez az, ami visszatér a GetName (): (GetName ())
visszhang. "Ez az, ami visszatér a GetName (): (GetName ())";
?>

Ezzel a szintaxissal az objektum tulajdonságait is elérheti a vonalak belsejében.

osztályfoo (
VAR $ BAR \u003d "Én bár vagyok." ;
}

$ foo \u003d új foo ();
$ Bar \u003d "bar";
$ Baz \u003d tömb ("foo", "bar", "baz", "Quux");
echo "($ foo -\u003e $ bar) \\ n";
echo "($ foo -\u003e ($ baz [1])) \\ n";
?>

A példa eredménye:

Én bár vagyok. Én bár vagyok.

Megjegyzés:

Funkciók, módszerek, módszerek, statikus osztályváltozók, valamint a belsejében futó állandók {$} A PHP 5. verziójával kezdődően azonban a megadott értéket a változó nevét ugyanabban a kontextusban fogják feldolgozni, mint a meghatározott karakterlánc. Egyetlen göndör rögzítők használata ( {} ) Nem fog működni a funkciók, módszerek, osztálytartók vagy statikus változók értékeinek eléréséhez.

// mutasd meg az összes hibát
error_reporting (e_all);

osztályú sörök (
const softdrink \u003d "rootbeer";
Nyilvános statikus $ ale \u003d "IPA";
}

$ rootbeer \u003d "A & W";
$ IPA \u003d "Alexander Keith \\" s ";

// működik, megjeleníti: szeretnék A & W-t
echo "Szeretném ($ (sör :: softdrink)) \\ n";

// is működik, megjeleníti: szeretnék alexander Keith "s
echo "Szeretném $ (Beers :: $ ale)) \\ n";
?>

Hozzáférés a szimbólumhoz és annak változásához

A vonalakban lévő szimbólumok használhatók és módosíthatók az eltolásuk meghatározásával a karakterlánc kezdetéhez képest, a karcolásból, a szögletes zárójelben, például egy karakterlánc után, például $ str. Gondolj a sínre erre a célra, mint egy sor karakter. Ha több mint 1 szimbólumot kell szereznie, vagy cserélnie kell, funkciókat használhat substr () és substr_replace ().

Megjegyzés: A PHP-vel kezdődően 7.1.0, a negatív elmozdulási értékek támogatottak. Meghatározzák az eltolás a sor végétől. Korábban a negatív eltolás okozta a szint hibát E_notice Olvasás közben (üres karakterlánc visszaállítása) vagy E_warning Felvétel közben (a karakterlánc változatlanul marad).

Megjegyzés: A sorban lévő szimbólum göndör zárójelekkel is kezelhető, például $ str (42).

Figyelem

A karakterlánc határai fölötti eltolásra való törekvés megpróbálta kiegészíteni a sztringet a szóközökkel az eltolás előtt. A neum típusok átalakulnak. Az érvénytelen elmozdulási típus szintjét okozhat E_warning. Csak a sor első szimbólumát használják. A PHP 7.1.0-el kezdődően az üres karakterlánc hozzárendelése végzetes hibát okoz. Ebben az esetben a nulla bájt (null) hozzárendelték.

Figyelem

A PHP-ben lévő sorok belsőleg ábrázolják a bájt tömböket. Ennek eredményeképpen az elmozdulási karakterlánchoz való hozzáférés vagy változás nem biztonságos a multibita kódolás szempontjából, és csak egybájtos kódolásokkal, például ISO-8859-1-et kell végrehajtani.

Megjegyzés: A PHP 7.1.0-el indításakor az üres index használata végzetes hibát okoz, korábban ebben az esetben a karakterláncot figyelmeztetés nélkül átalakították.

# 12 többsoros példa

// kap az első karakterlánc szimbólum
$ str \u003d "Ez egy teszt." ;
$ első \u003d $ str [0];

// kap a harmadik karakterlánc szimbólumot
$ Harmadik \u003d $ STR [2];

// kap az utolsó karakterlánc szimbólum
$ str \u003d "Ez még mindig teszt." ;
$ Last \u003d $ STR [Strlen ($ ST) - 1];

// az utolsó karakterlánc szimbólumának megváltoztatása
$ str \u003d "Nézd meg a tengert";
$ Str [strlen ($ str) - 1] \u003d "e";

?>

A PHP 5.4-el kezdve a karakterláncban lévő eltolásnak be kell állítania akár egész számot, akár egy számot tartalmazó karakterláncot, különben figyelmeztetés kerül kiadásra. Korábban eltolás, meghatározott típusú sor "Foo", figyelmeztetések nélkül átalakult 0 .

Példa 13 különbségek a PHP 5.3 és PHP 5.4 között

$ str \u003d "ABC";

Var_dump ($ str ["1"]);
var_dump (BETSET ($ str ["1"]));

Var_dump ($ str ["1,0"]);
var_dump (konzol ($ str ["1,0"]));

Var_dump ($ str ["x"]);
var_dump (konzol ($ str ["x"]));

Var_dump ($ str ["1x"]);
var_dump (BETSET ($ STR ["1x"]));
?>

E példa eredménye PHP 5.3:

string (1) "B" bool (true) string (1) "B" bool (true) karakterlánc (1) "A" bool (igaz) karakterlánc (1) "B" bool (igaz)

E példa eredménye PHP 5.4:

string (1) "B" bool (TRUE) FIGYELMEZTETÉS: ILLEGAL STRING OFFSET "1.0" az /tmp/t.php in /tmp/t.php a 7 karakterlánc (1) "B" bool (FALSE) FIGYELMEZTETÉS: Illegális string Offset "x" Tmp / t.php on line 9 karakterlánc (1) "A" bool (hamis) karakterlánc (1) "B" bool (FALSE)

Megjegyzés:

Egy másik típusú változók elérésének kísérlete (kivéve az egyes interfészeket végrehajtó tömböket vagy tárgyakat) vagy {} csendben visszatér NULLA.

Megjegyzés:

PHP 5.5 Hozzáadott támogatás a szimbólumokhoz való hozzáféréshez a String Literálokhoz Szintaxis segítségével vagy {} .

A karakterláncok módosításához számos hasznos funkció van.

A fő funkciókat a karakterláncfunkciók szakaszában és a kiterjesztett keresési és csere - a perl-kompatibilis rendszeres kifejezések funkciói ismertetik.

Átvitat a karakterláncra

Az érték átalakítható egy karakterláncba (Húr)vagy funkciók strval (). Kifejezésekben, ahol a karakterlánc szükséges, az átalakítás automatikusan bekövetkezik. Ez akkor történik, ha funkciókat használ. visszhang. vagy nyomtatásVagy ha a változó értékét összehasonlítjuk a karakterlánchoz. A típusok szakaszainak olvasása és a típusok manipulálása érthetőbbé teszi a következőt. Lásd még settype ().

A tömbök mindig egy karakterláncgá alakulnak át "Sor"így nem jelenítheti meg a tömb tartalmát ( sor.) Használata visszhang. vagy nyomtatásHogy megtudja, mit tartalmaz. Egy külön elem megtekintéséhez használjon valamit echo $ Arr ["foo"]. Lásd az alábbi tippeket az összes tartalom megjelenítéséhez / megtekintéséhez.

Változó típus konvertálása "Tárgy" típusban húr Használt mágikus módszer __tostring.

Érték NULLA Mindig üres karakterláncra alakítják át.

Ahogy korábban láttuk, a közvetlen átalakítása a húr a tömbök, objektumok és erőforrások nem ad semmilyen hasznos információt magukról az értékekről, kivéve típusai. A hibakeresési funkcióinak megfelelőbb módja print_r () és var_dump ().

A PHP legtöbb értéke állandó tárolásra szolgáló karakterláncba alakítható át. Ezt a módszert serializációnak nevezik, és funkcióval lehet végrehajtani. sorialize ().

Soros konverzió számokban

Ha a karakterlánc numerikus értékként kerül felismerésre, akkor a kapott érték és a típus az alábbiak szerint van meghatározva.

Ha a karakterlánc nem tartalmaz semmilyen karaktert ".", "E" vagy "E", és a szám értéke az egész számok (definiált) Php_int_max), a karakterláncot egész számként fogják felismerni ( egész szám). Minden más esetben lebegőpontos számnak számít ( úszó.).

Az értéket a vonal kezdeti része határozza meg. Ha a karakterlánc helyes numerikus értékkel kezdődik, akkor ezt az értéket használják. Ellenkező esetben az érték 0 (nulla) lesz. A megfelelő numerikus érték egy vagy több számjegy (amely tizedespontot tartalmazhat), a későbbi opcionális indikátorral bemutatott jel kérésére. A diploma jelzője "E" vagy "E", az azt követő egy vagy több számmal.

$ Foo \u003d 1 + "10,5"; // $ foo float (11.5)
$ Foo \u003d 1 + "-1.3E3"; // $ foo float (-1299)
$ Foo \u003d 1 + "Bob-1.3e3"; // $ foo egész szám (1)
$ Foo \u003d 1 + "bob3"; // $ foo egész szám (1)
$ Foo \u003d 1 + "10 kis sertés"; // $ foo egész szám (11)
$ Foo \u003d 4 + "10.2 kis piggyák"; // $ foo float (14.2)
$ Foo \u003d "10,0 sertés" + 1; // $ foo float (11)
$ Foo \u003d "10,0 sertés" + 1.0; // $ foo float (11)
?>

A konverzióra vonatkozó további információkért lásd a Unix Sttod (3) dokumentációs részét.

Ha meg szeretné vizsgálni a fejezet példáit, másolja és illessze be, és a következő sort, hogy lássa, mi történik:

echo "\\ $ foo \u003d\u003d $ foo; típusa:". GETTYPE ($ foo). "
\\ n ";
?>

Ne várjon, hogy szerezzen szimbólumkódot úgy, hogy egész számra konvertálja (például a C) pontban. A karakterek átalakítása ASCII kódjaira, és használja a funkciókat ord () és cHR ().

A karakterlánc típusának megvalósításának részletei

7 évvel ezelőtt.

A dokumentáció nem említi, de a heredoc végén lévő záró pontosvessző ténylegesen valódi pontosvesszővel értelmezhető, és mint ilyen, néha szintaktikai hibákhoz vezet.

$ Foo \u003d.<<aBCD.
Vége;
?>

Ez nem:

foo (<<aBCD.
Vége;
);
// szintaxis hiba, váratlan ";"
?>

Pontosvessző nélkül jól működik:

foo (<<aBCD.
Vége.
);
?>

3 évvel ezelőtt.

Használhatsz olyan karakterláncot, mint a char (mint c)

$ A \u003d "String Array Test";

var_dump ($ a);
// visszatérési karakterlánc (17) "string tömb teszt"

var_dump ($ a);
// visszatérési karakterlánc (1) "s"

// - a tömbön -
var_dump ((tömb) $ a);
// visszatérő tömb (1) (\u003d string (17) "string tömb teszt")

var_dump ((tömb) $ a);
// visszatérési karakterlánc (17) "s"

Norihori.

15 ÉVVEL EZELŐTT.

A komplex szintaxis segítségével mind az objektum tulajdonságai, mind az objektum-módok értékét egy karakterláncban helyezheti el. Például ...
osztályvizsgálat (
Nyilvános $ 1 \u003d 1;
Nyilvános funkció két () (
Visszatérés 2;
}
}
$ teszt \u003d új teszt ();
echo "foo ($ teszt -\u003e egy) bar ($ teszt -\u003e két ())";
?>
"FOO 1 BAR 2" kimutatása lesz.

Azonban nem teheted ezt a névtér összes értékét. Az osztályállállók és a statikus tulajdonságok / módszerek nem működnek, mert a komplex szintaxis a "$" -ot keresi.
osztályvizsgálat (
Const one \u003d 1;
}
echo "foo (teszt :: egy) sáv";
?>
Ez a "Foo (teszt :: egy) sáv" lesz. A konstansok és a statikus tulajdonságok megkövetelik, hogy megszakítsa a karakterláncot.

3 évvel ezelőtt.

Vigyázz, hogy összhangban a "String konverzióhoz a számokhoz":

Ha ("123ABC" \u003d\u003d 123) visszhang "(IntrStr \u003d\u003d int) helytelenül teszteli az igazat.";

// Mivel az egyik oldal egy szám, a karakterlánc helytelenül átalakul az INTSTR-ről INT-re, ami ezután megfelel a tesztszámnak.

// igaz minden olyan feltételes, mint például, ha, és kapcsolja be az államokat (valószínűleg hurkok is)!

// Ez egy hatalmas biztonsági kockázatot jelenthet a felhasználói bemenet tesztelése / használata során, miközben csak egy egész számot tesztel.

// IT Sems Az egyetlen javítás 123-ra vonatkozik, hogy "123" -nek legyen, így nem történik átalakítás.

?>

6 ÉVVEL EZELŐTT.

A vezetõ nullák a húrokban (legkisebb meglepetés), amelyet nem kezelnek oktálisnak.
Fontolgat:
$ x \u003d "0123" + 0;
$ y \u003d 0123 + 0;
echo "x $ x, y $ y"; // nyomtatások "x 123, y 83"
mÁS SZAVAKKAL:
* A forráskódban a numerikus literálok vezető numerója "oktális", C.F. Strtol ().
* Vezető nullák a húrokban (pl. Felhasználó által benyújtott adatok), ha a (implicit módon vagy kifejezetten) az egész számra figyelmen kívül hagyják, és tizedes, C.f. Strtod ().

10éve.

Íme egy könnyű hack, hogy lehetővé tegye a kettős idézett húrok és a heredocs számára, hogy tetszőleges kifejezéseket tartalmaznak a göndör rögzítési szintaxisban, beleértve a konstansokat és más funkcióhívásokat:

// hack nyilatkozat
funkció _expr ($ v) ($ v $ v;)
$ _Expr \u003d "_expr";

// játszótérünk.
definiálja ("qwe" , "ASD");
határozza meg.("ZXC", 5 );

$ A.= 3 ;
$ B.= 4 ;

funkció. c.($ A., $ B.) (Visszatérés.$ A.+ $ B.; }

// Használat
visszhang."Elő.{ $ _Expr.(1 + 2 )} Post \\ n "; // kimenetek "Pre 3 Post"
visszhang."Elő.{ $ _Expr.(qwe.)} Post \\ n "; // Outputs "Pre ASD Post"
visszhang."Elő.{ $ _Expr.(c.($ A., $ B.)+ zXC.* 2 )} Post \\ n "; // kimenetek "Pre 17 Post"

// General Syntax ($ _expr (...))
?>

2 évvel ezelőtt.

Bár hasznos lenne hozzáadni ezt a megjegyzést úgy, hogy az információ legalább a PHP webhely megfelelő oldalán jelenjen meg.

Ne feledje, hogy ha kettős idézett karakterláncot szeretne használni egy asszociatív kulcsmal, akkor lehet a T_ENCAPSED_AND_HITEPACE hiba. Néhányan ezt tekintik, mint az egyik kevésbé nyilvánvaló hibaüzenet.

Olyan kifejezés, mint:

$ Gyümölcs.\u003d tömb (
"A"=> "Alma",
"B"=> "BANÁN",
// stb. stb.
);

Nyomtatás. "Ez egy$ Gyümölcs.[ "A"] "; // t_encapsed_and_whitespace.
?>

biztosan darabokra esik.

A következőképpen megoldhatja:

nyomtatás"Ez egy$ Gyümölcs.[ a.] " ; // Unquote a kulcs
nyomtatás"Ez egy${ gyümölcs.[ "A"]} " ; // komplex szintaxis
nyomtatás"Ez egy{ $ Gyümölcs.[ "A"]} " ; // komplex szintaxisváltozás
?>

Személyes preferenciája van az utolsó változatnak, mivel természetesebb és közelebb van ahhoz, hogy a kifejezés a karakterláncon kívül legyen.

Ez nem egyértelmű (nekem legalábbis), hogy miért a PHP MissinterPrets az egyetlen idézet a kifejezésen belül, de elképzeltem, hogy van valami köze a tény idézőjelei nem része az érték karakterláncának - ha a karakterlánc már csak az idézeteket értékesíti Útjában áll ...?

2 évvel ezelőtt.

Mindkettőnek kell működnie :(

osztályTesztelés{
Nyilvános statikus.
$ Var.= "Statikus";
Nyilvános Const Var \u003d
"CONST";

Nyilvános funkció. sayhellostatic.() {
Visszhang.
"Helló:{ $ EZT:: $ Var.} " ;
}

Nyilvános funkció. sayhelloconst.() {
Visszhang.
"Helló:{ $ EZT:: var)" ; // Feldolgozási hiba: szintaktikai hiba, váratlan „)” várása „[”
}
}

$ OBJ.\u003d NEW.Tesztelés();
$ OBJ.-> sayhellostatic.();
$ OBJ.-> sayhelloconst.();

3 évvel ezelőtt.

Valami, amit tapasztaltam, amely kétségtelenül segíteni fog valakinek. . .
In My szerkesztő, ez lesz szintaxis kiemelése a HTML és a $ Megjegyzés:

$ Html \u003d.<<<"EOD"
$ megjegyzés
EOD;

HASZNÁLATA Ez azt mutatja, mindenhol ugyanaz a szín:

$ Html \u003d.<<$ megjegyzés
EOD;

Így egy sokkal könnyebb dolgozni

11 évvel ezelőtt.

Az elméd megmentéséhez ne olvassa el a korábbi megjegyzéseket a dátumokról;)

MIKOR BOT stringeket convered AZ Numerics (IN ( "$ A"\u003e "$ B") Test) Ezután Eredményezte Numerics használnak, Else Teljes karakterláncot összehasonlította Char-by-Char:

var_dump("1.22" > "01.23" ); // bool (hamis)
var_dump("1.22.00" > "01.23.00" ); // BOOL (TRUE)
var_dump("1-22-00" > "01-23-00" ); // BOOL (TRUE)
var_dump((Úszó)"1.22.00" \u003e (Lebeg)"01.23.00" ); // bool (hamis)
?>

A PHP-ben lévő sorokat egyetlen vagy kettős idézőjel határozza meg. A fő különbség az, hogy kettős idézetekben helyettesíthető egy változóval:

Most egy másik megoldást találunk a php-ben lévő lecke változók feladata:

$ cím"; Visszhang"

$ Tartalom
"; ?>

Hogyan találja meg a PHP egy változót a karakterláncban?

Minden egyszerű. Ne feledje, milyen karaktereket lehet használni a változó nevében? Ezek számok, betűk és hangsúlyozva _.

Itt van PHP és elfogadja a nevet, hogy minden a $ szimbólum és az első tiltott szimbólum között van.

A következő PHP-kódban helytelenül határozza meg a változó nevét, és hibát ad:

A böngésző eredménye:

FIGYELMEZTETÉS: MEGHATÁROZOTT VÁLLALKOZÓ: PROVURB IN D: \\ OPENSERVER \\ DOMAINS \\ SITE \\ INDEX.PHP a 3. sorban

Ahhoz, hogy a PHP helyesen meghatározta a karakterlánc változó nevét, akkor a göndör zárójelbe kell helyezni ():

A böngésző eredménye:

1499rub

Nincs egyértelmű vélemény, milyen idézeteket kell használni a rendes vonalakhoz, amelyekben semmit sem kell helyettesíteni. Azonban sok programozó inkább egyedülálló idézeteket használ.

Az a tény az, hogy a kettős idézetek sok okból a szövetségnek "erre a vonalra kell helyettesíteniük valamit." Ezért javaslom egyetlen idézeteket a rendes szöveghez, és kettős - csak akkor, ha helyettesítené a változó a szövegben. Példa:

Áttekintő idézetek

Ha idézőjeleket kell tennie a karakterláncba, akkor 2 módja van:

A második példában a fordított réteg megsemmisíti az idézeteket a következő után, hogy a PHP egy karakterláncként érzékelje.

Mit gondolsz, mit kell tennie, hogy csak a fordított slash-t jelenítse meg? Végtére is, meg fogja vetni egy záró idézetet. Ez vicces, de meg kell írnod \u200b\u200begy második slash-t az első árnyékolására:

A sztring táblázata és átadása kettős idézetekben

A kettős idézetekben lévő fordított réteg lehetővé teszi, hogy ne csak idézeteket és magukat, hanem más karaktert is megvédje. A legnépszerűbbek a fül (a hosszú hely, amellyel kap, amikor megnyomja a fület) és a karakterlánc átvitelét. Úgy néznek ki, mint ez:

Írjon egy szkriptet, hogy:
1. $ típusú változót hoz létre egy játékértékkel.
2. A "World of Warcraft" értéket (idézőjelekkel) változó $ nevet hoz létre.
3. Megjeleníti mindkét változót a címkén belül

. A változók között helynek kell lennie.

Milyen idézetek használhatók a húrok tervezéséhez - apostrófok vagy klasszikus kettős idézetek?

Elemezzük meg a különbséget a két és egy idézőjelek között a PHP-ben, és példákon, megtudjuk, mikor kell használni.

A változók és árnyékolási szekvenciák az egyes idézetekben bekapcsolt vonalakban tapasztalt speciális karakterekhez nem kerülnek feldolgozásra. Az apostrófák által keretezett vonalakat a PHP-tolmács sokkal gyorsabban dolgozza fel, mint a kettős idézőjel körülvevő hasonló vonalak.

Az oka az oka egyszerű: a kettős idézetben lévő vonalak tolmács PHP továbbá ellenőrzi a változókat, és ha ezek megfelelnek, akkor a karakterlánc változó neve helyett az értéket illessze be. De az apostrófából kötött karakterláncot a tolmács a szokásos szövegként érzékeli, és ezeknek a PHP-vonalakban nem végzett transzformációk nem folytatódnak. Úgy gondolom, hogy nyilvánvaló, hogy a vonalak feldolgozása egyetlen idézetben minden esetben gyorsabban fordul elő.

Kezdjük, leírjuk, hogyan kell meghatározni a karakterláncot, majd ellenőrizze, hogy a sorok gyorsabban fordulnak elő az egyes idézetek soraiban.

A karakterlánc meghatározásának legegyszerűbb módja az, hogy egy idézőjelekre (") lezárja. Annak érdekében, hogy egyetlen idézőjelben lévő karakterláncon belüli idézeteket alkalmazzuk, a hátrameneti deficent (\\) szimbólum előtt kell lennie, amely árnyékolt. Ha a hátrameneti mosogatónak egyetlen idézet előtt kell mennie, vagy a vonal végén kell lennie, akkor meg kell ismételnie. Ha megpróbálsz védeni a többi karaktert, akkor a fordított süllyedő funkció is kinyomtatható.

Példát adunk az egyes idézetek használatára:
// eltávolítás: egyszerű karakterlánc
echo "egyszerű sor";
// eltávolítja: Itt vagyok
echo "i \\" Itt ";
// Will Out: Nem fog beilleszteni: \\ n Új karakterlánc
echo "Nem fog beilleszteni: \\ n új stringet";
// Will Out: A $ minta változó nem helyettesíti
echo "$ Példa változó nem helyettesíti"; Ha a karakterlánc kettős idézőjelben van ("), a PHP felismeri a speciális karaktereknél nagyobb kontroll szekvenciákat, és helyettesíti a helyettesítő nevét az érték karakterláncában. Ugyanúgy, mint az egyetlen idézetekkel, hogy kettős idézeteket használjon egy karakterlánc belsejében befejeződött. A kettős idézetben előre kell haladnia a fordított fonat szimbólumát (\\).

Adunk példát a kettős idézetek használatára:
// eltávolítás: egyszerű karakterlánc
echo "egyszerű sor";
// Will Out: "Hóvirág" "
echo "cég \\" hófúvás \\ "";
// Will Out: Ez egy új karakterláncra lesz fordítva
echo "Ez az új vonalra fogja fordítani \\ n";
// Will Out: A változó helyettesíti
$ PÉMLET \u003d "LETERTUT";
echo "Változó $ Példa"; Emlékeztetni kell arra is, hogy a "\\ n" (új vonal), "r" (visszatérő kocsi) szekvencia, és nem a HTML. Tehát a böngészőben nem fog változtatni (csak az oldal forráslapján).

Tudjuk meg, milyen gyorsabb, mint egy kettős idézőjelek. A mérések írjon egy rövid teszt script, és azonnal vegye figyelembe, hogy ha van kipróbálni, az eredmény, hogy függ a hardver a számítógép vagy szerver más lesz.
// Visszaadja az időbélyegzőt a ciklus elején
$ Start \u003d mikrotime (igaz);
// Hozzon létre egy ciklusciklust 1 millió iterációra
mert ($ i \u003d 0; $ i< 1000000; $i++) {
$ Text \u003d "Itt van egy szimbólumszöveg";
}
// kiszámítja az eltöltött időt
$ TIME \u003d (Microtime (True) - $ Start); Eredmény: 0,09 másodperc.

Ha kettős idézeteket cserélünk a kettős:
$ Text \u003d "Itt van egy szimbólumszöveg"; Az eredmény 0,10 másodperc.

Ahogy látjuk, ha szöveges vonalakat használunk, a végrehajtás időbeli különbsége nagyon kicsi, akkor is elmondható, és egyáltalán nem létezik. A legérdekesebb lesz, amikor megpróbáljuk kombinálni a karakterláncot és a változót.
$ Text \u003d "Itt van az $ i szimbólumvonal; vagy
$ text \u003d $ i. "Itt van egy szimbolikus karakterlánc"; Az eredmény körülbelül: 0,27 másodperc.

A különbség nagyon érzékeny. A Concatenation és a kettős idézetek egyértelműen befolyásolják a sebességet, ha a karakterláncok hozzáadódnak a karakterlánchoz.

Amikor a kiszolgáló feldolgozza a kódot, ellenőrzi a kettős idézetek tartalmát a változók, állandók és egyéb. Időbe telik. És az a tény, hogy az egyetlen idézőjelek között van a kiszolgáló folyamata, mint a kész szöveg, és nem érdekli, mi található ott. Az egyszeri és kettős idézetek sebessége közötti különbség nagyon jelentéktelen, de ha erősen betöltött projektet fejleszt, kissé mentett milliszekundum már győzelem.