IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod do textových řetězců v PHP

Vítejte u první úvodní lekce PHP manuálu. V tomto kurzu si projdeme všechny funkce PHP manuálu. V dnešní lekci si projdeme textové řetězce a jejich funkce pro práci s nimi. Vysvětlíme si také způsoby psaní těchto řetězců, slučování i sčítání.

Pokud nemáte nainstalované PHP a nevíte jak ho nainstalovat, je lepší si prvně projít článek na instalaci PHP a MySQL pomocí XAMPP nebo WAMP. Po instalaci PHP si můžete také zkoušet různé pokusy a vytvářet své webové stránky :)

Textové řetězce

Textové řetězce jsou pole znaků. Lze tedy říci, že to jsou znaky seřazené v jedné konečné množině, jejíž délka je omezená velikostí paměti. Řetězce můžeme v PHP psát pomocí apostrofů '' nebo uvozovek "". Rozdíly mezi nimi se dozvíme dále :)

Textové řetězce pomocí apostrofů

Otevřeme si textový editor nebo jiné vývojové prostředí a vytvoříme si soubor s příponou .php. Do něho nadeklarujeme novou proměnnou $retezec, kam uložíme svůj text:

$retezec = 'Ahoj světe';

Nyní náš text chceme zobrazit na naší stránce. K tomu nám budou sloužit základní funkce, například echo() nebo print(). My použijeme funkci print(), jelikož se jedná o jednoduchý textový řetězec pouze s jedním parametrem:

$retezec = 'Ahoj světe';
print $retezec;

Funkci print() a echo můžeme psát přímo bez závorek a nebo se závorkami: print($retezec); :)

Po úspěšném spuštění našeho PHP skriptu se na stránce objeví náš text:

Ahoj světe

Chceme-li text zalomit, použijeme HTML tag pro odřádkování <br />. Zároveň se můžeme potýkat s problémem, jak napsat do textu další apostrofy. Slouží nám k tomu značka obráceného lomítka \, kterou vložíme před apostrof. Pokud bychom tak neudělali, řetězec by se ukončil a my se tak pravděpodobně dočkáme syntaktické chyby. Náš kód vypadá takto:

$retezec = 'Ahoj světe <br> tímto tě \'zdravím\'';
print $retezec;

Dojde tak k zalomení a zároveň k odescapování textu. Apostrofy se vypíší na stránce:

Ahoj světe
tímto tě 'zdravím'

Pro napsání zpětného lomítka \ použijeme stejný princip jako při psaní apostrofů:

$retezec = 'Ahoj světe, tímto tě \\zdravím';
print $retezec;

A dostaneme výsledek:

Ahoj světe, tímto tě \zdravím

Výhodou psaní textových řetězců pomocí apostrofů je rychlost zpracování textu. Avšak zde nemůžeme psát speciální znaky a vkládat proměnné.

Textové řetězce pomocí uvozovek

Psaní textových řetězců pomocí uvozovek je podobné jako s apostrofy. Avšak s tím rozdílem, že můžeme do řetězců zapisovat speciální znaky a vkládat proměnné. Vypisování textu je ale nepatrně pomalejší.

Použití speciálních znaků

Uvozovky nám umožňují do řetězce zapisovat speciální znaky, například:

  • \n - odřádkování textu (Newline)
  • \r - odřádkování textu (Carriage_return), tuto značku používal operační systém MAC OS do verze 9, MAC OS X používal již značku \n
  • \t - vytvoření tabulátoru

Psaní pomocí uvozovek s použitím speciálních znaků vypadá takto:

$retezec = "Toto je textový řetězec vyjádřený s uvozovkami \n tento text je odřádkován";
print $retezec;

Nyní nám nic nebrání v tom, abychom do našeho textu vložili také apostrofy:

$retezec = "Toto je textový řetězec vyjádřený s 'uvozovkami' \n tento text je odřádkován";
print $retezec;

Pro escapování znaku uvozovky ", dolaru $ nebo zpětného lomítka \ použijeme stejný způsob jako pro řetězec s apostrofy. Mějme ale na paměti, že speciální značky (\n, \r, \t) pro řetězce s apostrofy nefungují! Avšak pokud chceme zapisovat například do textového souboru nebo konzole, lze tyto značky použít.

Vkládání proměnných do textových řetězců

Do textových řetězců vyjádřenými uvozovkami můžeme vkládat proměnné.

Příkladem může být vytvoření nové proměnné $pozdrav, do které napíšeme náš nejoblíbenější pozdrav:

$pozdrav = "Zdravím";
$retezec = "$pozdrav, neznámý uživateli";
print $retezec;

Výsledkem na stránce potom bude:

Zdravím, neznámý uživateli

Pokud chceme mít na výběr z více pozdravů, tak se nám proměnná stává složitější a využijeme například pole s klíčem jako řetězec:

$pozdrav = array(
   'obecny' => "Zdravím",
   'formalni' => "Dobrý den",
   'neformalni' => 'Čáu'
);
$retezec = "${pozdrav['formalni']}, neznámý uživateli";
print $retezec;

// Funguje také tento zápis:
$retezec = "{$pozdrav['formalni']}, neznámý uživateli";
print $retezec;

A jestli jsme se někde nepřepsali, měli bychom na stránce vidět následující:

Dobrý den, neznámý uživateli
Dobrý den, neznámý uživateli

Mixování variant

Do textových řetězců můžeme také vkládat HTML kód nebo JavaScript. Mnohdy nám právě mixování variant ušetří práci, avšak ve správně navrženém PHP kódu by k tomuto nemělo docházet.

My však toto pravidlo nedodržíme a mixování variant si vysvětlíme. Pokud chceme vytvořit například novou tabulku s daty narození našich rodičů nebo sourozenců, nezbývá nám nic jiného, než využít mixování variant. Provedeme to takto:

$rodina = '
<table border="1">
   <thead>
      <th>Jméno a příjmení</th>
      <th>Datum narození</th>
   </thead>
   <tr>
      <td>Pavel Novák</td>
      <td>21.03.1995</td>
   </tr>
</table>';
print $rodina;

Textový řetězec uložený v proměnné $rodina jsme uzavřeli do apostrofů a uvnitř řetězce s HTML kódem používáme uvozovky. Mnohonásobně si tímto usnadníme práci, jinak bychom každý apostrof museli odescapovat. Zobrazí se nám tabulka:

Mixování variant
index.php

Naopak textový řetězec s JavaScriptem uzavíráme do uvozovek a uvnitř používáme apostrofy:

$js = "<script> alert('Moje rodina je senzační!'); </script>";
print $js;

Výsledkem je dialogové okno se zadaným textem:

Dialogové okno se zadaným textem - PHP funkce

Slučování textových řetězců

Máme-li dva nebo více textových řetězců, například uložených v proměnných, které chceme slučovat, využijeme pro jejich slučování operátor . namísto +, jak už to bývá v ostatních programovacích jazycích. Operátor + používáme ke sčítání číselných hodnot.

Dva textové řetězce sloučíme do jednoho za pomocí teček:

$slucovani = 'Toto je věta, ' . 'která je sloučená ' . 's touto větou';
print $slucovani;

Po uložení a spuštění skriptu uvidíme výsledek:

Toto je věta, která je sloučená s touto větou

Slučování textu funguje i u proměnných, ve kterých první text může být zapsán uvozovkou a druhý apostrofem:

$jazyk = "PHP";
$slucovani = 'Programování v '. $jazyk .' mě baví!';
print $slucovani;

Textové řetězce se nám sloučí:

Programování v PHP mě baví!

Slučovat textové řetězce můžeme také pomocí operátoru .= docílíme tak stejného výsledku

$slucovani = 'Rádi programujeme v: ';
$slucovani .= 'PHP, ';
$slucovani .= 'C#';
print $slucovani;

Pro takový způsob slučování opisujeme název proměnné, u které chceme slučovat text, v našem případě je to proměnná $slucovani, ke které přidáváme další text opsáním této proměnné a přidáním operátoru .=. Tento operátor nám usnadňuje práci, stejně jako operátory ++, +=, ==, != a další.

Takový způsob slučování lze zapsat i jinak:

$slucovani = 'Rádi programujeme v: ';
$slucovani = $slucovani . 'PHP, ';
$slucovani = $slucovani . 'C#';
print $slucovani;

Avšak proč si komplikovat život, když existují operátory. Výsledkem bude stále to stejné:

Rádi programujeme v: PHP, C#

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

Slučování textového řetězce s jiným textovým řetězcem je jasná záležitost s očekávaným výsledkem. Zajímavější je slučování textových řetězců s čísly:

$cislo = 13;
$slucovani = 'Naše oblíbené číslo je ' . $cislo;
print $slucovani;

I přestože slučujeme text s číslem, uvidíme na obrazovce toto:

Naše oblíbené číslo je 13

Číslo je jednoduše vloženo do textového řetězce.

Ale pokud sčítáme číslo s číslem umístěném v textovém řetězci pomocí operátoru +:

$slucovani = 10 + '15';
print $slucovani;

Dojde k běžnému sčítání dvou čísel:

25

Sčítáme-li číslo s textem, kdy i v textu je zapsané nějaké číslo, nemá zde sčítání žádný vliv a dostaneme tak číslo, které jsme se s textových řetězcem pokoušeli sčítat:

$slucovani = 18 + ', to je mé oblíbené číslo hned za číslem 13';
print $slucovani;

Výsledkem je pouze číslo a textový řetězec je vypuštěn:

18

Avšak při sčítání čísla s textovým řetězcem, v němž je číslo na začátku:

$slucovani = 12 + '5 je kolik?';
print $slucovani;

Jsou tyto čísla sečteny a zbytek textu je vypuštěn:

17

V novějších verzích PHP pokud chceme slučovat textový řetězec s číslem uvnitř řetězce nebo na začátku, pomocí operátoru + nebo +=, budeme již na tento problém upozorněni formou výjimky A non well formed numeric value encountered.

Touto lekcí jsme se uvedli do problematiky textových řetězců a práce s nimi.

V další lekci, PHP funkce pro výpis textových řetězců, si vysvětlíme jednotlivé PHP funkce pro výpis textových řetězců, formátování textu a práci s argumenty.


 

Všechny články v sekci
PHP funkce
Přeskočit článek
(nedoporučujeme)
PHP funkce pro výpis textových řetězců
Článek pro vás napsal Pavel Vaněček
Avatar
Uživatelské hodnocení:
13 hlasů
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity