Dupla idézőjelek php-ban. Mi a különbség az egy- és a dupla idézőjeles karakterláncok között a PHP-ben? Php szökő idézetek

Ez a rövid cikk bemutatja, hogyan és hol kell használni idézetek PHP-ben.

Egyszeres idézőjelek (aposztrófok) PHP-ben

Az idézőjelekbe zárt karakterláncokat a PHP semmilyen módon nem dolgozza fel. Azaz az idézőjelek a közéjük zárt szöveget olyan formában jelenítik meg, ahogy van.

// Helyes visszhang "Hogy van az élet?"; echo "Hogy van az élet? $név"; echo "Hogy van az élet?".$név; // Incorrect echo "Hogy vagy? $name";

Speciális karakterek egyszeres és dupla idézőjelben

Annak biztosítására, hogy például a tabulátor karaktert (\t) tabulátor karakterként értelmezze, nem pedig perjelként és t betűként, a tabulátor karaktert tartalmazó szövegsort dupla idézőjelbe kell tenni. A \' és \\ karaktereket csak szimpla idézőjelben használhatja. Az összes többi escape szekvencia (\n, \r, \$ stb.) nem megengedett egyetlen idézőjelben.

// Helytelen visszhang "Hogy vagy?\n"; // Helyes visszhang "Hogy vagy?\n";

A karakterláncon belüli dupla idézőjelek elkerüléséhez tegye az idézőjeleket a fordított perjel elé \" .

// Helytelen visszhang "

Mi a helyzet?

"; // Helyes visszhang"

Mi a helyzet?

"; visszhang"

Mi a helyzet?

";

Dupla idézőjelek PHP-ben

A dupla idézőjelbe tett szöveget nagyon eltérően kezelik. Például a dupla idézőjelbe zárt változókat az értékükkel helyettesítjük. Ez kényelmessé teszi az összeállítást SQL lekérdezések idézőjelek használatával.

$query = "INSERT INTO table (bejegyzés,szerző,szöveg,dátum) ÉRTÉKEK ("$id","$author","$text","$dátum"");

Milyen típusú idézőjeleket használjak a karakterláncok formázásához – aposztrófokat vagy klasszikus dupla idézőjeleket?

Nézzük meg a különbséget a dupla és szimpla idézőjelek között a PHP-ben, és használjunk példákat, hogy megtudjuk, mikor melyiket kell használni.

Változók és escape szekvenciák a számára speciális karakterek, amelyek az idézőjelek közé zárt karakterláncokban fordulnak elő, nem kerülnek feldolgozásra. Az aposztrófokkal körülvett karakterláncokat a PHP értelmező sokkal gyorsabban dolgozza fel, mint a dupla idézőjelekkel körülvett hasonló karakterláncokat.

Az ok itt egyszerű: a PHP értelmező ezenkívül ellenőrzi a dupla idézőjelben lévő karakterláncokat a változók jelenlétére, és ha találnak, akkor a változó neve helyett annak értékét szúrja be a karakterláncba. De az aposztrófok közé zárt sort az értelmező szabályos szövegként érzékeli, és a PHP nem hajt végre semmilyen átalakítást ezekben a sorokban. Szerintem egyértelmű, hogy a karakterláncok egyszeres idézőjelben történő feldolgozása minden esetben gyorsabb lesz.

Először is írjuk le, hogyan kell definiálni egy karakterláncot, majd ellenőrizzük, mennyivel lesz gyorsabb az idézőjelekben lévő karakterláncok feldolgozása.

A karakterlánc meghatározásának legegyszerűbb módja, ha egyszeres idézőjelek közé ("). Ha egy idézőjeles karakterláncon belül egyszeres idézőjeleket szeretne használni, akkor ezeket egy fordított perjelnek (\) kell megelőznie, azaz meg kell jelennie. Ha a fordított perjelnek jönnie kell egy idézőjel előtt vagy a sor végén legyen, meg kell másolnia azt. Ha bármilyen más karaktert próbál kihagyni, a fordított perjel is kinyomtatásra kerül.

Íme egy példa az idézőjelek használatára:
// Kimenet: Egyszerű karakterlánc
echo "Egyszerű karakterlánc";
// Prints: Itt vagyok
echo "itt vagyok";
// Kimenet: Ez nem szúr be: \n új sort
echo "Ez nem fogja beszúrni:\nújsor";
// Kimenetek: A $example változó sem lesz helyettesítve
echo "A $example változó sem lesz helyettesítve"; Ha a karakterlánc dupla idézőjelbe (") van bezárva, a PHP több escape szekvenciát ismer fel a speciális karakterekhez, és a változó nevének értékét is helyettesíti a karakterláncban. Mint az egyszeres idézőjeleknél, annak érdekében, hogy dupla idézőjeleket használjon a dupla karakterláncban idézőjelek, azokat egy fordított perjelnek (\) kell megelőznie.

Íme egy példa a dupla idézőjelek használatára:
// Kimenet: Egyszerű karakterlánc
echo "Egyszerű karakterlánc";
// Kimenetek: "Snowdrop" cég
echo "Vállalat \"Hóvirág\"";
// Kimenet: Ez egy új sorhoz vezet
echo "Ez egy új sorra fog törni \n";
// Kimenet: A változó be lesz cserélve
$example = "le lesz cserélve";
echo "Változó $példa"; Ne feledje azt is, hogy a "\n" (újsor), a "\r" (kocsivissza) szekvencia egyszerű szövegre vonatkozik, nem HTML-re. Így nem fog változást látni a böngészőben (csak a forráskód oldalak).

Nézzük meg, mennyivel gyorsabbak a szimpla idézőjelek, mint a dupla idézőjelek. A mérésekhez írunk egy rövid teszt szkriptet, és azonnal megjegyezzük, hogy ha saját maga teszteli, akkor a PC vagy a szerver hardverétől függő eredmények eltérőek lesznek.
// Az időbélyeg visszaadása a ciklus elején
$start = mikroidő(igaz);
// Hozzon létre egy ciklust 1 millió iterációhoz
for ($i = 0; $i< 1000000; $i++) {
$text = "Itt van egy karakterlánc";
}
// Számítsa ki az eltöltött időt
$idő = (mikroidő(igaz) - $kezdet); Eredmény: 0,09 másodperc.

Ha az egyszeres idézőjeleket dupla idézőjelre cseréljük:
$text = "Itt van egy karakterlánc"; Az eredmény 0,10 másodperc lesz.

Amint látható, szöveges karakterláncok használatakor a végrehajtási idő különbsége nagyon kicsi, akár azt is mondhatnánk, hogy egyáltalán nem létezik. A móka akkor kezdődik, amikor megpróbálunk kombinálni egy karakterláncot és egy változót.
$text = "Itt a $i karakterlánc"; vagy
$text = $i."Itt van egy karakterlánc"; Eredmény hozzávetőlegesen: 0,27 másodperc.

A különbség elég észrevehető. Az összefűzés és az idézőjel egyértelműen befolyásolja a teljesítményt, ha változókat adunk a karakterlánchoz.

Amikor a kiszolgáló feldolgozza a kódot, ellenőrzi a dupla idézőjelek tartalmát változók, konstansok és egyebek tekintetében. Időbe telik. A szerver pedig kész szövegként dolgozza fel az idézőjelek között lévőket, és nem érdekli, mi van ott. Az egy- és a dupla idézőjelek teljesítménye között nagyon kicsi a különbség, de ha nagy terhelésű projektet fejlesztünk, akkor néhány ezredmásodperc megtakarítás már győzelem.

A PHP-ben egy karakterlánc tetszőleges hosszúságú karakterkészlet. A C-vel ellentétben a karakterláncok null karaktereket is tartalmazhatnak, ami semmilyen módon nem befolyásolja a programot. Más szavakkal, a karakterláncok bináris adatok tárolására használhatók. A karakterlánc hosszát csak a szabad RAM mennyisége korlátozza.

A PHP-ben egy karakter megegyezik egy bájttal, ami azt jelenti, hogy pontosan 256 különböző karakter lehetséges. Ez azt is jelenti, hogy a PHP nem rendelkezik natív Unicode támogatással. A funkciók bizonyos Unicode-támogatást biztosítanak utf8_encode()És utf8_decode() .

A karakterlánc könnyen feldolgozható szabványos függvényekkel, és közvetlenül is hozzáférhet bármely karakteréhez.

Egy egyszerű példa egy karakterlánc-változóra:

$a= "Ez csak egy karakterlánc változóban tárolt szöveg";
echo $a ; //Kimenet: "Ez csak egy karakterlánc változóba írt szöveg"
?>

Most nézzük meg részletesen az adattípus szintaxisát. húr.

A karakterlánc típusának szintaxisa

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

A karakterlánc meghatározásának legegyszerűbb módja, ha idézőjelek közé (a szimbólum " ).

Ha egyetlen idézőjelet szeretne használni egy karakterláncon belül, mint sok más nyelvben, azt egy fordított perjelnek kell megelőznie ( \ ), azaz képernyőre. Ha a fordított perjelnek egyetlen idézőjel előtt kell lennie, vagy a sor végén kell lennie, akkor meg kell másolnia. Ne feledje, hogy ha bármilyen más karaktert próbál kihagyni, a fordított perjel is kinyomtatásra kerül! Tehát általában nincs szükség a fordított perjel elől.

A másik két szintaxistól eltérően a változók és az escape szekvenciák a bezárt karakterláncokban előforduló speciális karakterekhez, Nem feldolgozás alatt állnak.

Íme egy példa az idézőjelek használatára:

visszhang "ez egy egyszerű karakterlánc";

Visszhang "Sorokba is beszúrhat
újsor karakter tehát,
mert ez normális"
;

// Kimenet: Arnold egyszer azt mondta: "Visszajövök"
visszhang "Egy nap Arnold azt mondta: "Visszajövök.";

Visszhang "Törölted a C:\\*.*-t?";

// Kimenetek: Törölted a C:\*.*-t?
echo "Törölted a C:\*.*-t?" ;

// Kimenet: Ez nem szúr be: \n új sort
visszhang "Ez nem fogja beszúrni:\nújsort";

// Kimenetek: $expand és $egyik változó nincs helyettesítve
visszhang "A $expand és a $egyik változó nincs helyettesítve";
?>

Ha a karakterlánc dupla idézőjelek között van ( " ), a PHP több escape szekvenciát ismer fel a speciális karakterekhez:

Vezérlési sorrend táblázat:

Utóbbi Jelentése
\n újsor (LF vagy 0x0A (10) ASCII-ben)
\r kocsi vissza (CR vagy 0x0D (13) ASCII-ben)
\t vízszintes lap (HT vagy 0x09 (9) ASCII-ben)
\\ fordított perjel
\$ dollár jel
\" kettős idézet
\{1,3} egy reguláris kifejezésnek megfelelő karaktersorozat, egy karakter az oktális számrendszerben
\x(1,2) reguláris kifejezésnek megfelelő karaktersorozat, karakter hexadecimális számrendszerben

Emlékezzünk még egyszer arra, hogy ha bármilyen más karaktert akarunk mnemonizálni, akkor a fordított perjel is ki lesz nyomtatva!

A karakterláncok meghatározásának másik módja a használata heredoc szintaxis ("<<< "). Után<<< необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

A záró azonosítónak a sor első oszlopában kell kezdődnie. Ezenkívül az azonosítónak ugyanazokat az elnevezési szabályokat kell követnie, mint a PHP összes többi címkéjének: csak alfanumerikus karaktereket és aláhúzást tartalmazhat, és nem számjegyekkel vagy aláhúzásjellel kell kezdődnie.

Figyelem! Nagyon fontos megjegyezni, hogy a záró azonosító sor nem tartalmaz más karaktereket, kivéve talán egy pontosvesszőt ( ; ). Ez azt jelenti, hogy a pontosvessző előtt vagy után nem lehet szóköz vagy tabulátor az azonosító. Fontos megérteni azt is, hogy a záró azonosító előtti első karakternek az operációs rendszer által meghatározott újsor karakternek kell lennie. Például Windows® rendszeren ez \r.

Ha ezt a szabályt megsértik, és a záró azonosító nem "tiszta", a záró azonosító hiányzónak minősül, és a PHP tovább keresi. Ha ebben az esetben a megfelelő záró azonosítót soha nem találja meg, az hibát okoz a feldolgozás során a szkript végén található sorszámmal.

Heredoc-text ugyanúgy viselkedik, mint egy karakterlánc kettős idézőjelben, anélkül, hogy azok szerepelnének. Ez azt jelenti, hogy a heredoc-ban nincs szükség idézőjelekre, de továbbra is használhatod a fenti escape szekvenciákat. A változók feldolgozása megtörténik, de ugyanolyan körültekintőnek kell lennie, ha komplex változókat használ a heredoc-ban, mint amikor karakterláncokkal dolgozik.

Példa heredoc karakterlánc meghatározására:

$str =<<példasor,
több sort fed le,
heredoc szintaxis használatával.
EOD;

/* Bonyolultabb példa változókkal. */
osztályú foo
{
var $foo ;
var $bar ;

foo() függvény
{
$this -> foo = "Foo" ;
$this -> bar = array("Bar1" , "Bar2" , "Bar3" );
}
}

$foo = new foo();
$name = "Névem" ;

Visszhang<<A nevem "$name". $foo-t írok-> foo.
Most következtetek
($foo -> bár [1]) .
Ennek egy nagy "A" betűt kell kiadnia:
\x41
EOT;
?>

Nem vagyok szakértő a PHP programozásban, de egy kicsit zavarban vagyok, miért látok olyan kódot a PHP-ben, amelyen egy karakterlánc van egyszeres és néha dupla idézőjelek között.

Csak azt tudom, hogy .NET vagy C nyelvben, ha szimpla idézőjelben van, az azt jelenti, hogy karakter és nem karakterlánc.

Megoldás

Amit tudnia kell

$a = "név"; $b = "az én $a"; == "a nevem" $c = "az én $a"; != "a nevem"

A PHP-ben az emberek szimpla idézőjeleket használnak egy állandó karakterlánc definiálására, például "a", "my name" , "abc xyz", míg kettős idézőjelekkel egy olyan karakterláncot, amely egy azonosítót tartalmaz, például "a $b $c $d".

És egy másik dolog

Echo "a nevem";

gyorsabb, mint

Echo "a nevem";

Echo "én" . $a;

lassabban mint

Echo "az én $a";

Ez igaz a többi használt karakterláncra is.

A PHP-ben az idézőjeles szöveget karakterlánc-értékként kezeli, míg a dupla idézőjeles szöveget az értékük lecserélésével és feldolgozásával elemzi.

$teszt = "változó"; echo "Hello Mr $test"; // a kimenet a következő lenne: Hello Mr változó echo "Hello Mr $test"; // a kimenet a következő lenne: Hello Mr $test

Itt a dupla idézőjel elemzi az értéket, és az idézőjel karakterlánc-értékként kezeli (a $test változó elemzése nélkül).

Mindkét típusú beágyazott karakter karakterlánc. Kényelmes egyfajta árajánlatot használni egy másik típusú árajánlat megkötéséhez. """ és """ . A legnagyobb különbség az idézőjeltípusok között az, hogy a beágyazott azonosítóhivatkozások a dupla idézőjelbe kerülnek, nem pedig a szimpla idézőjelekbe.

A karakterlánc karakterkészlet. A PHP-ben egy karakter megegyezik egy bájttal, ami azt jelenti, hogy pontosan 256 különböző karakter lehetséges. Ez egyben azt is jelenti, hogy a PHP nem rendelkezik natív Unicode támogatással, bizonyos Unicode támogatást az utf8_encode() és az utf8_decode() függvények biztosítanak.

Megjegyzés: Nincs probléma, ha a karakterlánc nagyon nagy. A PHP gyakorlatilag semmilyen korlátozást nem ír elő a karakterláncok méretére vonatkozóan, így egyáltalán nincs okunk aggódni a hosszuk miatt.

Szintaxis

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

Egyetlen idézetek

A karakterlánc meghatározásának legegyszerűbb módja az, hogy idézőjelek közé (a " karakter) teszi.

Ahhoz, hogy egyetlen idézőjelet használjunk egy karakterláncon belül, mint sok más nyelvben, azt egy fordított perjelnek (\) kell megelőznie, azaz meg kell jelennie. Ha a fordított perjelnek egyetlen idézőjel előtt kell lennie, vagy a sor végén kell lennie, akkor meg kell másolnia. Ne feledje, hogy ha bármilyen más karaktert próbál kihagyni, a fordított perjel is kinyomtatásra kerül! Tehát általában nincs szükség a fordított perjel elől.

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

Megjegyzés: A másik két szintaxistól eltérően az egy idézőjeles karakterláncokban megjelenő speciális karakterek változói és escape szekvenciái nem kerülnek feldolgozásra.

Echo "ez egy egyszerű karakterlánc"; echo "Így is beszúrhatsz újsor karaktert a karakterláncokba, ahogy ez normális"; // Kimenetek: Arnold egyszer azt mondta: "I"ll be back" echo "Arnold egyszer azt mondta: "I\"ll be back""; // Kimenetek: Törölted a C:\*.*-t? echo "Törölte a C:\\*.*-t?"; // Kimenetek: Törölted a C:\*.*-t? echo "Törölte a C:\*.*-t?"; // Kimenetek: Ez nem szúr be: \n egy új sort visszhang "Ez nem szúr be: \n egy új sort"; // Kimenetek: $expand és $egyik változó nincs behelyettesítve echo "$expand és $egyik változó nincs helyettesítve";

Dupla idézőjelek

Ha a karakterlánc dupla idézőjelbe (") van zárva, a PHP több escape szekvenciát ismer fel a speciális karakterekhez:

11-1. táblázat. Escape Sequences

Ismételjük, ha bármilyen más karaktert szeretne mnemonizálni, akkor a fordított perjel is ki lesz nyomtatva!

De a dupla idézőjeles karakterláncok legfontosabb tulajdonsága a változók kezelése. További részletek: string feldolgozás.

Heredoc

A karakterláncok meghatározásának másik módja a heredoc szintaxis ("

A záró azonosítónak a sor első oszlopában kell kezdődnie. Ezenkívül az azonosítónak ugyanazokat az elnevezési szabályokat kell követnie, mint a PHP összes többi címkéjének: csak alfanumerikus karaktereket és aláhúzást tartalmazhat, és nem számjegyekkel vagy aláhúzásjellel kell kezdődnie.

Figyelem

Nagyon fontos megjegyezni, hogy a záró azonosító sor nem tartalmaz más karaktereket, kivéve esetleg egy pontosvesszőt (;). Ez azt jelenti, hogy az azonosítót nem szabad behúzni, és nem lehet szóköz vagy tabulátor a pontosvessző előtt vagy után. Fontos megérteni azt is, hogy a záró azonosító előtti első karakternek az operációs rendszer által meghatározott újsor karakternek kell lennie. Például Macintosh-on ez \r.

Ha ezt a szabályt megsértik, és a záró azonosító nem "tiszta", a záró azonosító hiányzónak minősül, és a PHP tovább keresi. Ha ebben az esetben a megfelelő záró azonosítót soha nem találja meg, az hibát okoz a feldolgozás során a szkript végén található sorszámmal.

A Heredoc szöveg ugyanúgy viselkedik, mint a dupla idézőjelben lévő karakterlánc, anélkül, hogy azok szerepelnének. Ez azt jelenti, hogy a heredoc-ban nincs szükség idézőjelekre, de továbbra is használhatod a fenti escape szekvenciákat. A változók feldolgozása megtörténik, de ugyanolyan körültekintőnek kell lennie, ha komplex változókat használ a heredoc-ban, mint amikor karakterláncokkal dolgozik.

Példa 11-2. Heredoc karakterlánc-definíciós példa

$str =<<foo = "Foo"; $this->bar = array("Bar1", "Bar2", "Bar3"); ) ) $foo = new foo(); $name = "Névem"; visszhang<<foo. Most kiírom ($foo->bar). Ennek egy nagy "A" betűt kell kiadnia: \x41 EOT;

Megjegyzés: A Heredoc támogatást hozzáadtuk a PHP 4-hez.

Változók kezelése

Ha egy karakterláncot idézőjelben vagy heredoc használatával definiálunk, akkor a benne lévő változók feldolgozásra kerülnek.

Kétféle szintaxis létezik: egyszerű és összetett. Az egyszerű szintaxis könnyebb és kényelmesebb. Lehetővé teszi egy változó, egy tömbérték vagy egy objektumtulajdonság feldolgozását.

Az összetett szintaxist a PHP 4-ben vezették be, és felismerhető a kifejezést körülvevő kapcsos kapcsos zárójelekből.

Egyszerű szintaxis

Ha az értelmező dollárjellel ($) találkozik, akkor a lehető legtöbb karaktert megragadja, hogy érvényes változónevet alkosson. Ha meg szeretné adni egy név végét, tegye a változó nevét kapcsos zárójelek közé.

$sör = "Heineken"; echo "$sör íze nagyszerű"; // működik, a """ érvénytelen karakter egy változónévhez echo "Ivott néhány $sört"; // nem működik, az "s" egy érvényes változónév echo "Ivott néhány $(sört)"; // művek visszhangja "Ivott néhány ($sört)"; // működik

Egy tömbelem (tömb) vagy egy objektum (objektum) tulajdonsága ugyanúgy feldolgozható. A tömbindexekben a záró szögletes zárójel (]) jelzi az indexdefiníció végét. Az objektumtulajdonságokra ugyanazok a szabályok vonatkoznak, mint az egyszerű változókra, bár ezeket nem lehet úgy becsapni, mint a változókkal.

// Ezek a példák kifejezetten a // karakterláncokon belüli tömbök használatára vonatkoznak. A karakterláncokon kívül mindig tegye idézőjelek közé a // tömb karakterlánckulcsait, és ne használja a karakterláncokon kívül (zárójelben). // Mutassuk meg az összes hibát error_reporting(E_ALL); $gyümölcs = array("eper" => "piros", "banán" => "sárga"); // Működik, de vegye figyelembe, hogy az idézett karakterláncon kívül másképp működik echo "A banán $gyümölcs."; //Works echo "A banán az ($gyümölcs["banán"])."; // Működik, de a PHP az alábbiakban leírtak szerint először // a banán állandót keresi. echo "A banán ($gyümölcs)."; // Nem működik, használj göndör zárójelet. Ez feldolgozási hibát okoz. echo "A banán $gyümölcs["banán"]."; // Művek echo "A banana is" . $gyümölcs["banán"] . "."; // Works echo "Ez a négyzet $négyzet->szélesség méter széles."; // Nem működik. A megoldáshoz lásd az összetett szintaxist. echo "Ez a négyzet $négyzet->szélesség00 centiméter széles.";

Minden bonyolultabb dologhoz összetett szintaxist kell használnia.

Összetett (göndör) szintaxis

Nem azért nevezik összetettnek, mert nehéz megérteni, hanem azért, mert lehetővé teszi összetett kifejezések használatát.

Valójában bármilyen értéket felvehet egy sorba, amely a névtérben található ezzel a szintaxissal. Egyszerűen írja be a kifejezést ugyanúgy, mint a soron kívül, majd zárja be ( és ). Mivel a(z) "(" kihagyása nem lehetséges, ezt a szintaxist a rendszer csak akkor ismeri fel, ha a $ közvetlenül követi (. ().

// Mutassuk meg az összes hibát error_reporting(E_ALL); $nagyszerű = "fantasztikus"; // Nem működik, a következőt adja ki: This is (fantasztikus) echo "Ez ( $nagyszerű)"; // Működik, kiadja: Ez fantasztikus visszhang "Ez ($nagyszerű)"; echo "Ez $(nagy)"; // Works echo "Ez a négyzet ($square->width)00 centiméter széles."; // Működik echo "Ez működik: ($arr)"; // Ez ugyanazon okból érvénytelen, mint amiért a $foo érvénytelen a // soron kívül. Más szavakkal, ez továbbra is működik, // de mivel a PHP először a konstans foo-t keresi, // E_NOTICE (undefined állandó) hibát fog dobni. echo "Ez rossz: ($arr)"; // Működik. Többdimenziós tömbök használatakor mindig használjon kapcsos zárójelet // strings echo "Ez működik: ($arr["foo"])"; // Működik. echo "Ez működik: " . $arr["foo"]; echo "Még írhatsz is ($obj->values->name)"; echo "Ez a $name nevű változó értéke: ($($név))";

Karakter elérése és módosítása egy karakterláncban

A karakterláncokban lévő karakterek használhatók és módosíthatók, ha megadjuk az eltolásukat a karakterlánc elejétől, nullától kezdve, a karakterlánc utáni kapcsos zárójelben.

Megjegyzés: A visszafelé kompatibilitás érdekében továbbra is lehetősége van tömbzárójelek használatára ugyanazokra a célokra. A PHP 4-től kezdődően azonban ez a szintaxis elavult.

Példa 11-3. Néhány példa karakterláncra

// A karakterlánc első karakterének lekérése $str = "Ez egy teszt."; $első = $str(0); // A karakterlánc harmadik karakterének lekérése $third = $str(2); // A karakterlánc utolsó karakterének lekérése $str = "Ez még teszt."; $utolsó = $str(strlen($str)-1); // A sor utolsó karakterének módosítása $str = "Nézd a tengert"; $str(strlen($str)-1) = "én";

Hasznos funkciók és operátorok

A karakterláncok a "." operátorral fűzhetők össze. (pont). Kérjük, vegye figyelembe, hogy a "+" összeadási operátor itt nem működik. További információkért lásd: String operátorok.

Számos hasznos funkció létezik a karakterláncok módosítására.

A fő függvények leírása a karakterlánc-függvényekről, a reguláris kifejezés-függvényekről a speciális kereséshez és helyettesítéshez (két részben: Perl és POSIX speciális).

Vannak még funkciók az URL-karakterláncokhoz, valamint a karakterláncok titkosítására/visszafejtésére szolgáló funkciók (mcrypt és mhash).

Végül, ha még mindig nem találta meg, amit keres, tekintse meg a karaktertípus függvényeket is.

Konvertálás karakterláncra

Egy értéket karakterláncsá alakíthat át a cast (string) vagy az strval() függvény segítségével. Azokban a kifejezésekben, ahol karakterláncra van szükség, az átalakítás automatikusan megtörténik. Ez akkor fordul elő, amikor az echo() vagy print() függvényeket használja, vagy ha egy változó értékét egy karakterlánchoz hasonlítja. A kézikönyv Típusok és Típuskezelés részeinek elolvasása a következőket teszi egyértelműbbé. Lásd még settype().

A TRUE logikai értéket "1" karakterláncra alakítja a rendszer, a FALSE értéket pedig "" (üres karakterlánc) formában jeleníti meg. Ily módon mindkét irányban konvertálhatja az értékeket - logikai értékről karakterláncra és fordítva.

Egy egész számot vagy lebegőpontos számot karakterláncgá alakítanak át, amelyet a számjegyeiből álló szám képvisel (beleértve a lebegőpontos számok kitevőjét).

A tömbök mindig az "Array" karakterláncra konvertálódnak, így nem jelenítheti meg a tömb tartalmát az echo() vagy print() segítségével, hogy megnézze, mit tartalmaz. Egyetlen elem megtekintéséhez valami olyasmit kell tennie, mint az echo $arr["foo"]. Az alábbiakban az összes tartalom megjelenítésére/megtekintésére vonatkozó tippeket talál.

Az objektumok mindig az "Objektum" karakterláncra konvertálódnak. Ha hibakeresési célból ki szeretné nyomtatni egy objektumtag változó értékét, olvassa el a következő bekezdéseket. Ha szeretné lekérni a szükséges objektum osztálynevét, használja a get_class() parancsot.

Az erőforrások mindig karakterláncokká alakulnak, amelyek szerkezete „Resource id #1”, ahol 1 a PHP által futás közben hozzárendelt egyedi erőforrásszám. Ha meg szeretné szerezni az erőforrás típusát, használja a .

A NULL mindig üres karakterláncra konvertálódik.

Mint fentebb látható, a tömbök, objektumok vagy erőforrások kiadása nem ad hasznos információkat magukról az értékekről. Az értékek kinyomtatásának jobb módja a hibakereséshez a print_r() és a var_dump() függvények használata.

A PHP értékeket karakterláncokká is konvertálhatja a tartós tárolás érdekében. Ezt a módszert szerializálásnak hívják, és a serialize() függvény segítségével hajtható végre. Ezen túlmenően, ha a PHP-telepítés WDDX-támogatással rendelkezik, a PHP-értékeket XML-struktúrákká sorba rendezheti.

Karakterláncok átalakítása számokká

Ha a karakterláncot numerikus értékként ismeri fel, az eredményül kapott érték és típus a következőképpen kerül meghatározásra.

A karakterláncot a rendszer lebegő karakterláncként ismeri fel, ha tartalmazza a „.”, „e” vagy „E” karakterek bármelyikét. Ellenkező esetben egész számként lesz meghatározva.

Az értéket a karakterlánc eleje határozza meg. Ha a sor érvényes numerikus értékkel kezdődik, akkor ez az érték kerül felhasználásra. Ellenkező esetben az érték 0 (nulla) lesz. Az érvényes numerikus érték egy vagy több számjegy (amely tizedesvesszőt is tartalmazhat), amelyet opcionálisan előz meg egy előjel, majd egy opcionális kitevő. A kitevő "e" vagy "E", amelyet egy vagy több számjegy követ.

$foo = 1 + "10,5"; // A $foo egy float (11.5) $foo = 1 + "-1.3e3"; // A $foo egy float (-1299) $foo = 1 + "bob-1.3e3"; // A $foo egy egész szám (1) $foo = 1 + "bob3"; // A $foo egy egész szám (1) $foo = 1 + "10 kismalac"; // A $foo egy egész szám (11) $foo = 4 + "10,2 Little Piggies"; // A $foo egy float (14.2) $foo = "10.0 pigs " + 1; // A $foo a float (11) $foo = "10.0 pigs" + 1.0; // A $foo lebeg (11)

Az átalakításról további információkat a Unix dokumentáció strtod(3) című szakaszában talál.

Ha szeretné tesztelni az ebben a részben található példákat, másolja és illessze be azt, valamint a következő sort, hogy megnézze, mi történik:

Echo "\$foo==$foo; írja be: " . gettype($foo) . "
\n";

Ne várja el, hogy egy karakter kódját egész számmá alakítva kapja meg (mint például C-ben). A karakterek kódjukká és vissza konvertálásához használja az ord() és a




Top