4. Řetězce

Řetězce jsou vlastně „kousky textu“. Nebo-li mohou obsahovat cokoliv.

Pro vypsání nějakého textu (řetězce) používáme nejčastěji příkaz echo a to třemi způsoby:

  1. řetězec uzavřený do jednoduchých uvozovek – apostrofů
  2. řetězec uzavřený do dvojitých uvozovek
  3. použít tzv. syntaxi heredoc v případě dlouhých textů

První způsob (apostrofy):

<?php
echo 'Toto je příklad řetězce.';
?>

Druhý způsob (uvozovky):

<?php 
echo "Toto je příklad řetězce.";
?>

Důležité rozdíly mezi těmito dvěma způsoby zápisu jsou:

  • do uvozovek můžeme psát jméno proměnné (viz dále) přímo. Do apostrofů musíme proměnnou zapsat tak, že ji "obalíme" tečkami (tzn. konkadence)
    <?php
    $body = 15;
    echo 'Pro získání oprávnění musíte mít ' .$body. ' bodů.';
    ?> ​
  • do uvozovek se dají psát speciální znaky jako je např. \n - odřádkování nebo \t - tabulátor a další (POZOR, prohlížeče neznají konstrukci \n, a tak nový řádek vidíme pouze ve zdrojovém kódu). 
  • do uvozovek můžeme psát i další uvozovky, ale musí použít tzv. escape sekvenci (viz níže). Použití uvozovek se tím pádem méně hodí na výpis HTML kódu, protože je složitější.

Třetí způsob:

V případě, že potřebujete vypsat delší text, můžete použít tzv. syntaxi heredoc. Syntaxe heredoc začíná trojicí znaků <<<, za kterou následuje nějaký text nazývaný identifikátor (v našem případě MMM). Stejný identifikátor musíme použít na ukončení takovéhoto řetězce. Za úvodním identifikátorem nesmí  začínat text. Ten musí být umístěn na novém řádku. Ukončovací identifikátor musí být na samostatném řádku, před ním nesmí být ani mezera, za ním musí být středník a nesmí se objevit v daném „dlouhém“ textu.

<?php
$text = <<<MMM
Toto je příklad dlouhého řetězce na
více řádků v heredoc syntaxi. Mohou to být
dlouhé věty..... Lorem ipsum dolor sit amet
Consectetuer lobortis lorem amet rutrum
Non Aenean Ut pellentesque condimentum
Accumsan laoreet ut turpis elit
Augue vitae Duis nec Nunc
Eget elit feugiat quis Ut
Vitae lobortis faucibus Aliquam wisi
Nam Donec sociis dictum commodo
Pede feugiat amet convallis metus
Tincidunt parturient quam pretium sapien
Nullam lorem libero vestibulum risus
Et metus sed purus nec
dipiscing est laoreet consectetuer enim
Id sed diam tellus ipsum
MMM;
echo $text;
?>

Escape sekvence

Pokud do textu potřebujete zapsat uvozovky či apostrof, musíte před takovýto znak vložit tzv. escape sekvenci:

<?php
echo "Tady bude uvozovka \" a text dále pokračuje.";
// Vypíše: Tady bude uvozovka " a text dále pokračuje
?>

PHP v tomto případě ví, že pokud se před uvozovkami či před apostrofem nachází zpětné lomítko, nekončí řetězec, ale je třeba následný znak vypsat.

Pozn.: o escape sekvencích bude dále ještě zmíňka

Psaní HTML tagů do řetězců

V rámci psaní textových řetězců je možné také přímo do tohoto textu začlenit i jakékoliv HTML a CSS tagy. Příklad:

<?php 
echo 'Tady bude <span style="color: red;">červený text</span>.
<br>
Další text na novém řádku.';
?>

Zjištění délky řetězce

V případě, že potřebujeme zjistit délku řetězce (počet znaků) využívá PHP k této operaci funkci strlen:

<?php
echo strlen('ahoj');
// Vypíše se číslo 4, protože slovo Ahoj má 4 znaky
?>

Za funkcí strlen jsou v závorkách předány tzv. parametry funkce. V tomto případě je to pouze řetězec 'ahoj'. Zápis funkce se odborně nazývá volání funkce. Výsledkem je vypsání čísla 4, jinak řečeno funkce vrací hodnotu.

Funkci strlen můžeme využít i pro vypsání délky řetězce, pocházejícího z proměnné:

<?php
$a = 'Miloslav Boudný';
// Přiřazení řetězce do proměnné a.
echo strlen($a);
// Vypíše délku řetězce v proměnné $a, tedy číslo 15.
?>

Další praktickou vestavěnou funkcí je trim.

Funkce trim odstraní tzv. bílé znaky ze začátku a z konce řetězce. Za bílé znaky jsou považovány mezery, tabulátory, konce řádků a další znaky. Lze využít např. u zadávání textových polí do formuláře a jejich kontrolu. 

Defaultně funkce trim odstraní tyto znaky:

  • (ASCII 32 (0x20)), obyčejná mezera.
  • (ASCII 9 (0x09)), tabulátor.
  • (ASCII 10 (0x0A)), nová řádka (line feed).
  • (ASCII 13 (0x0D)), návrat vozíku (carriage return).
  • (ASCII 0 (0x00)), znak NUL.
  • "x0B" (ASCII 11 (0x0B)), vertikální tabulátor.

Malá ukázka:

<?php
$text1 = " Karel ";
$text2 = "      Svoboda  ";
echo "Vaše jméno a příjmení je ".$text1." ".$text2;
echo "<br>";
echo "Vaše jméno a příjmení je ".trim($text1)." ".trim($text2);
// Je třeba si zobrazit zdrojový kód, jinak neuvidíte rozdíl.
?>

Funkce trim má také možnost zadání parametru

V následujícím příkladu je např. odstraněno písmeno K a S. Jedná se o znaky, které musí být na začátku. 

<?php
$text1 = "Karel";
$text2 = "Svoboda";
echo "Vaše jméno a příjmení je ".trim($text1,"K")." ".trim($text2,"S");
?>

Více informací k funkci trim

Příbuzné funkce:

  • ltrim() - odstraní bílé mezery zleva
  • rtrim() - odstraní bílé mezery zprava

Vytisknout