Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

2. diel - PHP funkcie pre výpis textových reťazcov

V predchádzajúcej lekcii, Úvod do textových reťazcov v PHP , sme sa dozvedeli, ako vytvárať textové reťazce, vysvetlili sme si ich zlučovanie a výnimky, ktoré pri tom môžu nastať.

V tejto lekcii kurze PHP funkcií si vymenujeme a detailne popíšeme základné funkcie pre výpis textových reťazcov, ktoré je dobré poznať.

Funkcie pre výpis textových reťazcov

Medzi základné funkcie pre výpis textových reťazcov patrí rozhodne echo(), print(), printf() a pre programátora veľmi užitočná funkcia var_dump(). Pomocou týchto funkcií vypíšeme na našej stránku textové reťazce alebo premenné, ktoré budú viditeľné aj pre iných užívateľov našej webovej stránky.

echo()

Je základné funkcie pre výpis textových reťazcov. Funkcia echo() nie je tak úplne funkcií, pretože zátvorky, ktoré sa u funkcií bežne píšu, tu môžeme vynechať. Môžeme tu vypisovať ľubovoľný počet argumentov a premenných rôznych dátových typov než string. Jednoduchý výpis textového reťazca vykonáme takto:

echo "Toto je náš text<br/>";
echo("Tento zápis také funguje");

Oba tieto spôsoby nám v prehliadači vypíše:

Funkce echo()
localhost

Do funkcie echo() možno odovzdávať ľubovoľné množstvo parametrov a premenných, dochádza potom k spojeniu parametrov a premenných:

$parametry = "parametrech";
echo "Toto ","je ","text ","o ","více ",$parametry;

Výsledkom je reťazec:

Funkce echo() 2
localhost

print()

Je podobná funkcii echo(), ale o trochu pomalší. Funkcia print() vždy vráti hodnotu 1. Hlavným rozdielom je nemožnosť zápisu parametrov oddelených čiarkou. Ak by sme chceli zapísať viac textových reťazcov, musíme ich zlúčiť pomocou operátora .:

$pole = array("zábava!", "nuda!");
print 'Slučování '.'textových '.'řetězců '.'je '.$pole[0];

Výsledkom je reťazec:

Funkce print()
localhost

printf()

Táto funkcia nám umožňuje vypisovať formátovaný výstup. Ak by sme napríklad chceli číslo uložené v premennej previesť na číslo desatinné o rôznom počte desatinných miest alebo zistiť, aký znak sa schováva na pozíciu 70 v ASCII tabuľke, využijeme na to práve funkcii printf(). Vo funkcii printf() môžeme použiť tieto formátovacie značky:

formát popis Príklad
%% Vracia znak % a formátovať značku za ním %% c =>% c
%b Číslo bude naformátované ako binárny 20 => 10100
%c Číslo bude naformátované ako znak s ASCII hodnotou 70 => F
%d Číslo bude naformátované ako celé číslo 53,2 => 53
%e Argument bude formátuje ako vedecký zápis 20 => 2.0e + 1
%E To isté ako predchádzajúce, ale s veľkými písmenami 20 => 2.0E + 1
%u Číslo bude naformátované ako unsigned (celé kladné číslo väčšieho rozsahu) 2 => 2
%f Číslo bude naformátované ako desatinné číslo 5 => 5.000000
%F Číslo bude naformátované ako desatinné číslo bez regionálneho nastavenia 5 => 5.000000
%g skratka pre %e a %f 20 => 20
%G skratka pre %E a %f 20 => 20
%s Argument sa formátuje ako textový reťazec 20 => "20"
%o Číslo bude naformátované do osmičkovej sústavy 20 => 24
%x Číslo bude naformátované do hexadecimálne sústavy (malé písmená) 154 => 9a
%X Číslo bude naformátované do hexadecimálne sústavy (veľké písmená) 154 => 9A
%+d Číslo bude naformátované ako celé číslo so znamienkom 50 => +50
Typov formátov je naozaj veľa, na príklade si ukážeme použitie niektorých z nich:
$vysledek = 35;
$reseni = array('správné', 'chybné');
printf('Váš výsledek je <i>%f</i> a to je <b>%s</b> řešení.', $vysledek, $reseni[0]);

Prvá premenná $vysledek ako celé číslo, bola naformátovaná ako desatinné číslo bez špecifikovaného počtu miest pomocou formátu %f. Druhá premenná $reseni[0] ako pole dvoch textových reťazcov, kde vypisujeme len ten prvý, bola naformátovaná ako text pomocou formátu %s.

Výstup na stránke bude:

Příklad funkce printf()
index.php

Ak chceme špecifikovať počet desatinných miest, bude formát trochu zaujímavejšie:

$cislo = 5;
printf('Číslo %.2f je desetinné číslo', $cislo);

a dostaneme textový reťazec:

Příklad funkce printf() II
index.php

Ak by sme z nejakého dôvodu chceli na stránku vypísať nejakú z formátových značiek, možno ju vypísať pridaním ďalšieho znaku % pred formátovať značku. Napríklad pri napísanie %%b sa na stránku vypíše formátové značka %b ako text a žiadny textový reťazec podľa nej nebude formátuje.

Vyhadzovania a zarovnávanie argumentov

Argumenty vo funkcii pre výpis printf() možno prehadzovať a ľubovoľne zarovnávať. Zápis formátových značiek sa mení. Pre špecifikovanie pozície, kam má byť príslušný argument vložený a vhodne formátuje, sa používa znak % a za ním číslo n-té argumentu, napríklad %2 pre argument na druhej pozícii vo funkcii. Po čísle pre špecifikovanie pozície musíme napísať formátovať značku, podľa ktorej bude argument formátuje. Namiesto znaku % použijeme pre PHP veľmi známy znak dolára $ a za neho vložíme formátovacie značku bez %:

$cislo_pet = 5;
$cislo_sest = 6;
$cislo_sedm = 7;
printf('Vybrané číslo %3$.2f je desetinné číslo', $cislo_pet, $cislo_sest, $cislo_sedm);

Tu vyberáme argument vo funkcii, ktorý sa nachádza na tretej pozícii %3$ a chceme ho sformátovať na desatinné číslo s dvomi desatinnými miestami .2f. Celý zápis teda je %3$.2f.

Je dôležité používať správny typ zápisu reťazca pomocou apostrofov ''. Pokiaľ ale chceme použiť úvodzovky "" musíme v tomto zápise znak $ odescapovat. Ak tak neurobíme, vypisujeme premennú, ktorá nemusí existovať a dostaneme chybovú hlášku.

Argumenty vo funkcii môžeme tiež zarovnávať a rôzne upravovať ich formátovanie. Môžeme pred nich vkladať medzery a alebo iné znaky ľubovoľného počtu, ktorý si určíme:

$zvire = 'kůň';
printf("(%10s)", $zvire);

Pomocou toho zápisu vypíšeme na stránku textový reťazec s obsahom premennej $zvire s minimálne desiatimi medzerami. %10s znamená sformátovanie premennej na text s celkovou dĺžkou 10 znakov. Text kůň uložený v premennej má dĺžku 3 znaky, to znamená, že zvyšných 7 znakov bude doplnené o 7 medzier zľava. Dostaneme text:

(     kůň)

Znak medzery môžeme vypisovať tiež sprava pridaním znaku - pred znak %:

$zvire = 'kůň';
printf("(%-10s)", $zvire);

a medzery sa naozaj vypíšu sprava:

(kůň     )

Možno ste si všimli, že je medzier v skutočnosti 5. Je to zapríčinené diakritikou znakov ů a ň. Tieto znaky sa totiž tvári ako jeden znak, v skutočnosti to sú ale znaky dva.

Ak chceme miesto medzier pred premennou v textovom reťazci vkladať iný znak, napríklad #, pred znak % pridáme apostrof s naším znakom '#:

$zvire = 'opice';
printf("(%'#10s)<br/>", $zvire); // Znaky # se vypíší zleva
printf("(%-'#10s)", $zvire); // Znaky # se vypíší zprava

Výstupom je:

Příklad opice
index.php

Diagnostický výpis

Nasledujúce funkcie slúži len na diagnostické účely a na produkčnom serveri (teda tam, kde pôjde ostrá verzia webu) by sa vôbec nemali objaviť.

Pri ladení aplikácie občas potrebujeme zistiť obsah nejaké premenné. Výpis pomocou funkcie echo() nás mnohokrát neuspokojí, pretože napr. Hodnota null nebude vypísaná, rovnako tak nepoznáme hodnotu false a podobne. Skúsme si rôzne dátové typy:

$a = null;
$b = true;
$c = array("Jablko", "Hruška", 'ovoce' => 'Švestka');
echo $a, '<br/>';
echo $b, '<br/>';
echo $c, '<br/>';

Výstup je:

Diagnostický zápis
index.php

PHP nás tiež varuje, že prevádza polia na string.

Premenná s dátovým typom null sa nám nevypísala vôbec. Pri druhej premennej s boolean hodnotou true sa nám vypísala 1 a nevieme, či sa naozaj jedná o boolean alebo o celé číslo integer. Posledná funkcia nám vypíše dátový typ Array (pole).

print_r()

Funkcie pre výpis print_r() vypíše hodnoty a informácie o premenné v ľudsky čitateľnej podobe. V praxi to znamená, že polia sú pekne rozčlenené ako klíč => hodnota. Odovzdajte funkciu naše pôvodné dáta:

$a = null;
$b = true;
$c = array("Jablko", "Hruška", 'ovoce' => 'Švestka');
print_r($a);
echo '<br/>';
print_r($b);
echo '<br/>';
print_r($c);

Na stránke sa nám vypíše usporiadaný výstup:

1
Array (
    [0] => Jablko
    [1] => Hruška
    [ovoce] => Švestka
)

Pre výpis polí je funkcia naozaj perfektný. Bude sa nám hodiť, pretože je občas dobré sa presvedčiť, že je v poli uložené naozaj to, čo chceme.

Ak by sme chceli, aby funkcia svoj výstup len vrátila (nie vypísala), stačí uviesť druhý parameter s hodnotou true.

var_dump()

Funkcie pre výpis var_dump() vypíše aj vráti argument vo formáte, ktorý je ľudsky čitateľný a ktorý navyše obsahuje dátové typy. Odovzdajte funkciu opäť naše dáta:

$a = null;
$b = true;
$c = array("Jablko", "Hruška", 'ovoce' => 'Švestka');
var_dump($a);
echo '<br/>';
var_dump($b);
echo '<br/>';
var_dump($c);

výstup:

NULL
boolean true
array (size=3) {
  [0] => string 'Jablko' (length=6)
  [1] => string 'Hruška' (length=7)
  ['ovoce'] => string 'Švestka' (length=8)
}

Tento výpis je pre programátora veľmi prínosný. Vidí dátový typ, jeho veľkosť a index či kľúč poľa.

die()

Ako už názov napovedá, funkcia die() zastaví vykonávanie skriptu. Predtým však vypíše svoje parametre. Ponúka sa na použitie s funkciou var_dump. Takto môžeme pri hľadaní chýb svoj program jednoducho "krokovať", umiestňovať die(var_dump($promenna)) na rôzne miesta programu a zisťovať, či sú v tomto bode správne údaje.

Ekvivalentom funkcia je metóda alebo konštrukcie exit(), ktorá má rovnaké parametre a aj robí to isté.

Funkcia die() býva často nesprávne uvádzaná v učebných materiáloch k výpisu chýb. Ideálne by sa to malo riešiť pomocou výnimiek. Aj bez nich by sa však aplikácia nemala takto násilne ukončiť, ale chybu nejako elegantne vypísať napr. Do indexu sa šablónou. . [Hint

V ďalšej lekcii, Rozdeľovanie a spájanie textových reťazcov , sa dozvieme, ako nahrádzať, meniť znaky alebo celé úseky textových reťazcov.


 

Predchádzajúci článok
Úvod do textových reťazcov v PHP
Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
Rozdeľovanie a spájanie 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