Reťazce
Reťazce môžu byť ohraničené dvoma druhmi oddeľovačov.
Ak je reťazec ohraničený úvodzovkami ("), premenné v jeho tele sú spracovávané.
Druhou možnosťou je uzavrieť reťazec do apostrofov ('). Tento reťazec nebude vo vnútri parsovaný, špeciálne znaky nie je možné použiť - budú zobrazené tak, ako sú.
Únikové sekvencie
| Sekvencia | Význam |
|---|---|
\" |
Úvodzovky v texte. |
\' |
Apostrof v texte. |
\\ |
Spätné lomítko texte. |
\$ |
Znak $ v texte |
\n |
Ukončenie riadku (new line). |
\r |
Návrat vozíka (carriage return) - tiež znak pre nový riadok, podobne ako \n. |
\t |
Tabulátor. |
\nnn |
Číslo v osmičkovej sústave (n sú číslice 0-7) |
\xHH |
Číslo v šestnástkovej sústave (H je číslo 0-9 alebo A-F) |
Pre ukončenie riadku sú k dispozícii dve rôzne sekvencie, \r a \n. \r odpovedá ASCII kódu 13 (znak označovaný ako CR), \n ASCII kódu 10 (LF). Na linuxových systémoch sa používa samotný znak \n a na počítačoch Macintosh \r, operačný systém Windows pre ukončenie riadku používa dva znaky v poradí \r\n.
Príklad: HTML kód vygenerovaný v PHP pomocou únikových sekvencií
<?php
echo "<html>\n\t<head>\n\t\t<title>Pokusná stránka v PHP<title/>\n";
echo "\t</head>\n\t<body>\n";
echo "\t\tAhoj svet!\n";
echo "\t</body>\n</html>";
?>
// výsledok
<html>
<head>
<title>Pokusná stránka v PHP<title/>
</head>
<body>
Ahoj svet!
</body>
</html>
Interpretácia premenných v reťazcoch
$zviera = "mačka";
echo "Chované zviera: $zviera";
// kód vypíše: Chované zviera: mačka
Ak chceme do textu dostať znak dolára, musíme ho označiť pomocou spätného lomítka:
echo "\$zviera = $zviera";
// vypíše: $zviera = mačka
Zložitejšia situácia nastane, keď chceme vo vnútri reťazca vypísať niektorú premennú asociatívneho poľa, napr. $odprac_hod["januar"]:
echo "Odpracované hodiny v januári: $odprac_hod["januar"] hodín";
// chyba, dôjde k predčasnému ukončeniu reťazca
Rovnako nie je možné vložiť celý reťazec do apostrofov, pretože nedôjde k náhrade premennej:
echo 'Odpracované hodiny v januári: $odprac_hod["januar"] hodín';
// chyba, nedôjde k náhrade obsahu premennej
Nefunguje ani opačný prístup, tj. uzavretie reťazca do úvodzoviek s vložením indexu do apostrofov:
echo "Odpracované hodiny v januári: $odprac_hod['januar'] hodín";
// chyba, PHP tento zápis nepochopí
Fungujúci spôsob zápisu vyzerá značne neštandardne:
echo "Odpracované hodiny v januári: $odprac_hod[januar] hodín";
// OK, január je braný ako neznáma konštanta
// vyhodnotená ako "január"
Doporučuje sa používať rozšírenú syntax (pridaná od PHP 4), ktorá umožňuje vložiť vo vnútri reťazca meno komplexnej premennej do zložených zátvoriek:
echo "Odpracované hodiny v januári: {$odprac_hod["januar"]} hodín";
// OK, vyhodnotené bez problémov
Týmto spôsobom je možné vo vnútri reťazcov vyhodnocovať premenné, či už ide o asociatívne pole, dvoj- či viacrozmerné pole alebo členské premenné objektov.
Syntax HEREDOC
Ďalší spôsob zápisu reťazcov sa volá HEREDOC. Používa sa najmä pri rozsiahlejších textoch s množstvom špeciálnych znakov vrátane úvodzoviek a apostrofov, ktoré je príliš namáhavé označovať pomocou únikových sekvencií. Celý reťazec je na začiatku označený pomocou <<<identifikátor a na konci pomocou identifikátor, pričom identifikátor je ľubovoľný reťazec, ktorý sa v texte, ktorý má byť do premennej uložený, nenachádza.
$a = 100;
$text = <<<HTXT
Toto je text priradený premennej "text" pomocou syntaxe HEREDOC. Vo vnútri textu môžeme používať aj apostrofy ('nieco'), sú nahradzované mená premenných ich obsahom (\$a = $a) a ako je vidieť, je možné používať aj únikové sekvencie (\\, \", \$ atď.)
HTXT;
echo $text;

