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í.

1. diel - Úvod do textových reťazcov v PHP

Vitajte u prvej úvodnej lekcie PHP manuálu. V tomto kurze si prejdeme všetky funkcie PHP manuálu. V dnešnej lekcii si prejdeme textové reťazce a ich funkcie pre prácu s nimi. Vysvetlíme si tiež spôsoby písania týchto reťazcov, zlučovanie aj sčítanie.

Ak nemáte nainštalované PHP a neviete ako ho nainštalovať, je lepšie si prvýkrát prejsť článok na inštaláciu PHP a MySQL pomocou XAMPP alebo WAMP. Po inštalácii PHP si môžete tiež skúšať rôzne pokusy a vytvárať svoje webové stránky:)

Textové reťazce

Textové reťazce sú polia znakov. Možno teda povedať, že to sú znaky zoradené v jednej konečnej množine, ktorej dĺžka je obmedzená veľkosťou pamäte. Reťazce môžeme v PHP písať pomocou apostrofov '' alebo úvodzoviek "". Rozdiely medzi nimi sa dozvieme ďalej:)

Textové reťazce pomocou apostrofov

Otvoríme si textový editor alebo iné vývojové prostredie a vytvoríme si súbor s príponou .php. Do neho nadeklarujeme novú premennú $retezec, kam uložíme svoj text:

$retezec = 'Ahoj světe';

Teraz náš text chceme zobraziť na našej stránke. K tomu nám budú slúžiť základné funkcie, napríklad echo() alebo print(). My použijeme funkciu print(), keďže ide o jednoduchý textový reťazec len s jedným parametrom:

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

Funkciu print() a echo môžeme písať priamo bez zátvoriek a alebo sa zátvorkami: print($retezec);:)

Po úspešnom spustení nášho PHP skriptu sa na stránke objavia náš text:

Ahoj světe

Ak chceme text zalomiť, použijeme HTML tag pre odriadkovanie <br />. Zároveň sa môžeme potýkať s problémom, ako napísať do textu ďalšej apostrofy. Slúži nám k tomu značka obráteného lomítka \, ktorú vložíme pred apostrof. Ak by sme tak neurobili, reťazec by sa ukončil a my sa tak pravdepodobne dočkáme syntaktické chyby. Náš kód vyzerá takto:

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

Dôjde tak k zalomenie a zároveň k odescapování textu. Apostrofy sa vypíšu na stránke:

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

Pre napísanie spätného lomítka \ použijeme rovnaký princíp ako pri písaní apostrofov:

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

A dostaneme výsledok:

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

Výhodou písanie textových reťazcov pomocou apostrofov je rýchlosť spracovania textu. Avšak tu nemôžeme písať špeciálne znaky a vkladať premenné.

Textové reťazce pomocou úvodzoviek

Písanie textových reťazcov pomocou úvodzoviek je podobné ako s apostrofmi. Avšak s tým rozdielom, že môžeme do reťazcov zapisovať špeciálne znaky a vkladať premenné. Vypisovanie textu je ale nepatrne pomalšie.

Použitia špeciálnych znakov

Úvodzovky nám umožňujú do reťazca zapisovať špeciálne znaky, napríklad:

  • \n - odriadkovanie textu (Newline)
  • \r - odriadkovanie textu (Carriage_return), túto značku používal operačný systém MAC OS do verzie 9, MAC OS X používal už značku \n
  • \t - vytvorenie tabulátora

Písanie pomocou úvodzoviek s použitím špeciálnych znakov vyzerá takto:

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

Teraz nám nič nebráni v tom, aby sme do nášho textu vložili tiež apostrofy:

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

Pre uvádzacích znaku úvodzovky ", dolára $ alebo spätného lomítka \ použijeme rovnaký spôsob ako pre reťazec s apostrofmi. Majme ale na pamäti, že špeciálne značky (\n, \r, \t) pre reťazce s apostrofmi nefungujú! Avšak pokiaľ chceme zapisovať napríklad do textového súboru alebo konzoly, možno tieto značky použiť.

Vkladanie premenných do textových reťazcov

Do textových reťazcov vyjadrenými úvodzovkami môžeme vkladať premenné.

Príkladom môže byť vytvorenie novej premennej $pozdrav, do ktorej napíšeme náš najobľúbenejší pozdrav:

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

Výsledkom na stránke potom bude:

Zdravím, neznámý uživateli

Ak chceme mať na výber z viacerých pozdravov, tak sa nám premenná stáva zložitejšie a využijeme napríklad pole s kľúčom ako reťazec:

$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 či sme sa niekde nepomýlili, mali by sme na stránke vidieť nasledujúce:

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

Mixovanie variantov

Do textových reťazcov môžeme tiež vkladať HTML kód alebo JavaScript. Veľakrát nám práve mixovanie variantov ušetrí prácu, avšak v správne navrhnutom PHP kóde by k tomuto nemalo dochádzať.

My však toto pravidlo nedodržíme a mixovanie variantov si vysvetlíme. Ak chceme vytvoriť napríklad novú tabuľku s dátami narodenia našich rodičov alebo súrodencov, neostáva nám nič iné, než využiť mixovanie variantov. Vykonáme 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ý reťazec uložený v premennej $rodina sme uzavreli do apostrofov a vnútri reťazca s HTML kódom používame úvodzovky. Mnohonásobne si týmto uľahčíme prácu, inak by sme každý apostrof museli odescapovat. Zobrazí sa nám tabuľka:

Mixování variant
index.php

Naopak textový reťazec s JavaScriptom uzatvárame do úvodzoviek a vnútri používame apostrofy:

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

Výsledkom je dialógové okno so zadaným textom:

Dialógové okno so zadaným textom - PHP funkcie

Zlučovanie textových reťazcov

Ak máme dva alebo viac textových reťazcov, napríklad uložených v premenných, ktoré chceme zlučovať, využijeme pre ich zlučovanie operátor . namiesto +, ako to už býva v ostatných programovacích jazykoch. Operátor + používame ku sčítanie číselných hodnôt.

Dva textové reťazce zlúčime do jedného za pomocou bodiek:

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

Po uložení a spustenie skriptu uvidíme výsledok:

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

Zlučovanie textu funguje aj u premenných, v ktorých prvý text môže byť zapísaný úvodzovky a druhý apostrofom:

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

Textové reťazce sa nám zlúčia:

Programování v PHP mě baví!

Zlučovať textové reťazce môžeme tiež pomocou operátora .= Docielime tak rovnaký výsledok

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

Pre takýto spôsob zlučovanie opisuje názov premennej, u ktorej chceme zlučovať text, v našom prípade je to premenná $slucovani, ku ktorej pridávame ďalší text opísaním tejto premennej a pridaním operátora .=. Tento operátor nám uľahčuje prácu, rovnako ako operátory ++, +=, ==, != A ďalšie.

Takýto spôsob zlučovanie možno zapísať aj inak:

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

Avšak prečo si komplikovať život, keď existujú operátormi. Výsledkom bude stále to isté:

Rádi programujeme v: PHP, C#

Zlučovanie reťazca a čísla

Zlučovanie textového reťazca s iným textovým reťazcom je jasná záležitosť s očakávaným výsledkom. Zaujímavejšie je zlučovanie textových reťazcov s číslami:

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

Aj napriek tomu, že zlučujeme text s číslom, uvidíme na obrazovke toto:

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

Číslo je jednoducho vložené do textového reťazca.

Ale ak sčítame číslo s číslom umiestnenom v textovom reťazci pomocou operátora +:

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

Dôjde k bežnému sčítanie dvoch čísel:

25

Sčítame Ak číslo s textom, kedy aj v texte je zapísané nejaké číslo, nemá tu sčítanie žiadny vplyv a dostaneme tak číslo, ktoré sme sa s textových reťazcom pokúšali sčítať:

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

Výsledkom je len číslo a textový reťazec je vypustený:

18

Avšak pri sčítaní čísla s textovým reťazcom, v ktorom je číslo na začiatku:

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

Sú tieto čísla spočítané a zvyšok textu je vypustený:

17

V novších verziách PHP ak chceme zlučovať textový reťazec s číslom vnútri reťazca alebo na začiatku, pomocou operátora + alebo +=, budeme už na tento problém upozornení formou výnimky A non well formed numeric value encountered.

Touto lekcií sme sa uviedli do problematiky textových reťazcov a práca s nimi.

V ďalšej lekcii, PHP funkcie pre výpis textových reťazcov , si vysvetlíme jednotlivé PHP funkcie pre výpis textových reťazcov, formátovanie textu a prácu s argumentmi.


 

Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
PHP funkcie pre výpis textových reťazcov
Článok pre vás napísal Pavel Vaněček
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity