Textové řetězce - Český PHP manuál

PHP Manuál Textové řetězce Textové řetězce - Český PHP manuál

V následujícím PHP tutoriálu si ukážeme, jak v PHP pracovat s textovými řetězci (stringy) a jak řetězce vypisovat. Textový řetězec se v PHP zapisuje buď do uvozovek nebo do apostrofů.

Textové řetězce pomocí apostrofů

Vytvořme si proměnnou s textovým řetězcem pomocí apostrofů ('):

<?php
$text = 'Černé díry jsou tam, kde bůh dělil nulou.';

Obsah proměnné $text:

"Černé díry jsou tam, kde bůh dělil nulou."

(Uvozovky u obsahu jsou jen ilustrativní, ve skutečnosti tam nejsou).

Proměnnou můžeme stejně dobře vytvořit i na více řádků, zalomení se v textu poté opravdu projeví:

<?php
$text = 'Černé díry jsou tam,
kde bůh dělil nulou.';

Obsah proměnné $text:

"Černé díry jsou tam,
kde bůh dělil nulou."

Pokud potřebujeme zapsat samotný apostrof, musíme ho odescapovat. Toho docílíme tím, že před něj napíšeme zpětné lomítko. Bez toho by PHP apostrof bralo jako ukončení řetězce.

Příklad:

<?php
$text = 'Znak \' musíme odescapovat';

Obsah proměnné $text:

"Znak ' musíme odescapovat"

Pokud budeme potřebovat v textu samotné zpětné lomítko, musíme ho také odescapovat, aby si PHP nemyslelo, že označujeme escapování. Vložíme ho do textu jako \\.

Textové řetězce pomocí uvozovek

S uvozovkovou variantou zadávání řetězců můžeme dělat to samé, co s apostrofovou. Pomocí uvozovek však můžeme do řetězce zapisovat speciální znaky a vkládat proměnné. Daní za to je o něco nižší rychlost.

Vkládání speciálních znaků

Uvozovky nám umožňují zapisovat speciální znaky, jako jsou např. \n pro nový řádek nebo \t pro tabulátor.

<?php
$text = "Černé díry jsou tam,\n kde bůh dělil nulou.";

Obsah proměnné $text:

"Černé díry jsou tam,
kde bůh dělil nulou."

Speciální znaky se označují zpětným lomenem a v apostrofové verzi nebudou fungovat. Přes escapování vyřešíme také vložení uvozovky \", dolaru \$ a samotného zpětného lomítka \\.

Vkládání proměnných

Do uvozovkového stringu můžeme vložit i obsah proměnných. A to i takto jednoduše:

<?php
$vek = 20;
$text = "Je mi $vek let.";

Obsah proměnné $text:

"Je mi 20 let."

Pokud je proměnná složitější (např. pole s klíčem jako řetězec), vložíme ji do složených závorek:

<?php
$veky = array('muj' => '20');
$text = "Je mi ${veky['muj']} let.";
// stejně tak funguje i varianta
$text = "Je mi {$veky['muj']} let.";

Obsah proměnné $text:

"Je mi 20 let."

Tyto speciální funkce uvozovek samozřejmě fungují jen v tu chvíli, když řetězec zadáváme ručně do kódu. Pokud speciální znaky zadá uživatel nebo se tam dostanou z jiné proměnné, nebudou fungovat:

<?php
$s = '#{abc} \n \t';
$text = "$s";

Obsah proměnné $text:

"#{abc} \n \t"

Mixování variant

Ačkoli by se to ve správně navržené aplikaci stávat nemělo, občas můžeme potřebovat do textového řetězce vložit HTML kód nebo JavaScript. Escapovat všechny uvozovky by bylo určitě nepříjemné. Využijeme tedy toho, že do apostrofové varianty můžeme uvozovky bez problému vkládat:

<?php
$html = '<table border="0">
<tr>
<td style="color: red;">Buňka</td>
</tr>
</table>';

Naopak při výpisu JavaScriptu budeme více potřebovat apostrofy:

<?php
$js = "alert('JavaScript!');";

Pokud víme, že nebudeme potřebovat speciální funkcionalitu uvozovek, můžeme použít apostrofy. Zvykl jsem si je používat zejména u klíčů polí o podobných věcí.

Konkatenace (slučování) řetězců

Více řetězců můžeme sloučit do jednoho. Překvapivě k tomu neslouží operátor +, ale . (tečka). Plus slouží ke sčítání číselných hodnot, to si ukážeme za chvíli.

Slučme 2 řetězce do jednoho:

<?php
$text = 'Udělal bych svět lepší' . ', ale nechtějí mi dát zdroják.';

Obsah proměnné $text:

"Udělal bych svět lepší, ale nechtějí mi dát zdroják."

Stejného výsledku bychom dosáhli i takto pomocí operátoru .= :

<?php
$text = 'Udělal bych svět lepší';
$text .= ', ale nechtějí mi dát zdroják.';

Slučovat můžeme samozřejmě stringy zapsané různými variantami zápisu a také proměnné:

<?php
$s = 'sloučený';
$text = "Toto je " . $s . ' text.';

Konkatenace je vlastně také alternativa k vkládání proměnných do řetězce, je na vás, jaký způsob vám více vyhovuje.

Konkatenace můžeme využít pro zadávání nových řádků tak, aby byly nezávislé na systému (Windows, Mac i Linux používají k označení nového řádku odlišné znaky). Konec řádku vyvoláme vložením konstanty PHP_EOL:

<?php
$text = 'Černé díry jsou tam,' . PHP_EOL . 'kde bůh dělil nulou.';

Slučování řetězce a čísla

Slučovat můžeme i řetězec a číslo. Sloučení pomocí tečkového operátoru (tedy konkatenace) je jednoznačné, číslo se jednoduše vloží do řetězce:

<?php
$vek = 20;
$text = 'Je mi ' . $vek . ' let.';

Obsah proměnné $text:

"Je mi 20 let."

Zajímavější to však začne být, když se řetězec a číslo pokusíme sečíst pomocí operátoru + (plus). Protože PHP je velmi dynamicky typované, není problém sečíst číslo, které je zadáno jako text:

<?php
$vysledek = 13 + '5';

Obsah proměnné $vysledek:

18

Pokud by jedno z čísel bylo desetinné, je i výsledek desetinný. Doposud by vše bylo ještě očekávatelné. Pojďme ale sečíst číslo a nesmyslný text:

<?php
$vysledek = 13 + 'Kobra 11';

Obsah proměnné $vysledek:

13

Výsledek je 13 a výpočet nevyvolal žádnou výjimku, to může být někdy dost nepříjemné. Ukažme si další příklad:

<?php
$vysledek = 13 + '5 Ahoj, jak se máš?';

Obsah proměnné $vysledek:

18

Při tomto výsledku si leckdo klepe na čelo, bohužel i takové je PHP a stejně je to nejpoužívanější webový jazyk :) To by bylo pro práci s řetězci vše.


 

  Aktivity (1)

Manuál pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Miniatura
Všechny články v sekci
Textové řetězce - Český PHP manuál

 

 

Komentáře

Avatar
radek.mummye
Člen
Avatar
radek.mummye:

Zdravím,
když mám v mateřském PHP dokumentu definovanou proměnnou (slouží jako identifikace té konkrétní stránky) a pak přes

include "http://localhost/...";

přidružený PHP soubor, který by podle té proměnné měl rozpoznat, o kterou konkrétní stránku se jedná a vypsat obsah do té původní, jak předám tu proměnnou z původního PHP do toho přidruženého?
Díky.

Editováno 29.3.2014 16:31
 
Odpovědět 29.3.2014 16:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.