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

9. diel - Malé a veľké písmená v textovom reťazci

V minulej lekcii, Opakovanie textových reťazcov v PHP , sme sa dozvedeli, ako opakovať jednotlivé znaky v textových reťazcoch a časti textových reťazcov.

V tejto lekcii kurze PHP funkcií si ukážeme, ako v textových reťazcoch meniť veľkosť písmen, teda veľké písmená na malé a naopak. Vďaka týmto funkciám môžeme pri písaní dlhých textov zabezpečiť, že napríklad na začiatku vety bude vždy veľké písmeno.

lcfirst()

Názov je zo skratky lc = L ower C ase (malé písmeno), first = prvý. Je to funkcia, ktorá prvý znak v textovom reťazci zmení z veľkého písmena na malé. Funkcia lcfirst() prijíma iba jeden parameter, ktorým je náš textový reťazec. Podmienkou je, aby sa znak nachádzal v anglickej abecede. Ukážme si jednoduchý príklad na túto funkciu:

$text = "Příliš žluťoučký kůň úpěl ďábelské ódy. ";
$text .= "Toto je další věta textového řetězce.";
$lcfirst = lcfirst($text);
print($lcfirst);

V našom textovom reťazci sa zmení prvé veľké písmeno na začiatku reťazca na malé, teda Příliš -> příliš. Funkcia ** NEMENIA veľké písmeno za malé u každej vety! Výstupom na stránku je:

Funkce lcfirst()
localhost

Ak sa prvý znak nenachádza v anglickej abecede, dostaneme chybne zmenený textový reťazec. Dôvodom je, že funkcia lcfirst() nie je multi-byte safe.

Chybne zmenený reťazec môže byť napríklad tento:

$text = "Čeština je občas problém.";
$lcfirst = lcfirst($text);
print($lcfirst);

Reťazec bude chybne prevedený alebo vôbec:

Funkce lcfirst()
localhost

ucfirst()

Je podobnou funkciou ako lcfirst(), názov je taktiež skratka: uc = U pper C ase. Rozdielom je, že prvý znak, ktorý sa nachádza v anglickej abecede, je zmenený z malého písmena na veľké. Funkcia ucfirst() prijíma iba jeden parameter, ktorým je náš textový reťazec. Príkladom funkcie ucfirst() môže byť:

$text = "větu začínáme vždy s velkým písmenem! ";
$text .= "Tak pravila naše paní učitelka.";
$ucfirst = ucfirst($text);
print($ucfirst);

Ako si môžeme všimnúť, prvý znak v našom textovom reťazci začína malým písmenom. Keďže sme napísali vetu, je vhodné ju písať s veľkým písmenom. Reťazec je umiestnený vo funkcii ucfirst(), bude teda jeho prvý znak zmenený na veľké písmeno. Avšak si opäť musíme dať pozor, že pri druhej vety k žiadnej zmene nedôjde. Druhá veta sa totiž zlučuje s našim textovým reťazcom a je teda jeho súčasťou:

Funkce ucfirst()
localhost

Dôjde teda k zmene malého písmena na veľké na začiatku reťazca pri slove větu -> Větu. Druhá veta zostane nezmenená.

Funkcia ucfirst() nie je multi-byte safe. Ak prvý znak v reťazci nebude z anglickej abecedy, dôjde k chybnému prevodu.

$text = "čeština je občas problém";
$ucfirst = ucfirst($text);
print($ucfirst);

Reťazec bude chybne prevedený alebo vôbec:

Funkce ucfirst()
localhost

ucwords()

Je funkcia, ktorá v každom slove v textovom reťazci zmení prvý znak anglickej abecedy z malého písmená na veľký. Znaky uc v názve funkcia znamená zase U pper C ase. Funkcia ucwords() prijíma celkom 2 parametre, kde prvým z nich je náš textový reťazec. Druhý parameter je tzv. Delimiter, pomocou ktorého môžeme špecifikovať, kde začína ďalšie slovo. Delimiter je väčšinou nejaký separátor, teda znak, ktorý delí slová. Ukážme si jednoduchý príklad na funkciu ucwords():

$text = "Každé slovo začíná velkým písmenem.";
$ucwords = ucwords($text);
print($ucwords);

Prvý znak u každého slova bude zmenený z malého písmena na veľké:

Funkce ucwords()
localhost

Teraz si vymyslíme textový reťazec, v ktorom chceme slová rozdeľovať iným znakom, než len medzerou. Pomocou druhého parametra funkcie bližšie špecifikujeme, akým znakom teda slová delíme. Vyberieme si teda separátor:

$text = "galerie|blog|kontakt";
$ucwords = ucwords($text, '|');
print($ucwords);

Pomocou separátora funkcie správne prevedie malé písmená na veľké. Výstupom na stránku je:

Funkce ucwords()
localhost

Ak by sme za každým separátorom slová urobili medzeru, tak znak na začiatku slova nebude prevedený, výnimkou je však prvé slovo:

Funkce ucwords()
localhost

Funkcia ucwords() nie je multi-byte safe. Znaky, ktoré nie sú z anglickej abecedy a neexistuje pre nich žiadne veľké písmeno, nebudú prevedené.

$text = "řeřicha je rostlina";
$ucwords = ucwords($text);
print($ucwords);

Prvý znak ř nebude prevedený a výstup na stránke bude:

Funkce ucwords()
localhost

strtolower()

strtolower() je funkcia, ktorá zmení v textovom reťazci všetky veľké písmená na malé. Funkcia prijíma iba jeden parameter, ktorým je textový reťazec. Uveďme si príklad:

$text = "Adam s Alžbětou šli nakupovat do nákupního centra v Plzni.";
$strtolower = strtolower($text);
print($strtolower);

Všetky veľké písmená budú prevedené na malé, teda Adam -> adam, Alžbětou -> alžbětou, Plzni -> plzni. Na stránke potom uvidíme:

Funkce strtolower()
localhost

Funkcia strtolower() nie je multi-byte safe. Znaky, ktoré nie sú z anglickej abecedy nebudú prevedené.

$text = "Žaneta s Čeňkem bydlí v Českých Budějovicích.";
$strtolower = strtolower($text);
print($strtolower);

Výsledkom na stránke bude:

Funkce strtolower()
localhost

Ak však chceme pridať podporu prevodu i iných znakov, využijeme multi-byte safe funkciu mb_strtolower(), ktorá prijíma o jeden parameter navyše, do ktorého doplníme kódovania. Príklad funkcie mb_strtolower():

$text = "Byli jsme v autokempu Žíchovec.";
$mb_strtolower = mb_strtolower($text, "UTF-8");
print($mb_strtolower);

Všetky znaky v reťazci budú prevedené podľa kódovania UTF-8 na malé písmená, teda Byli -> byli a Žíchovec -> žíchovec:

Funkce mb_strtolower()
localhost

strtoupper()

Je funkcia, ktorá zmení všetky malé písmená z anglickej abecedy v textovom reťazci na veľké. Funkcia prijíma iba jeden parameter, ktorým je textový reťazec:

$text = "Koukal jsem se na televizi.";
$strtoupper = strtoupper($text);
print($strtoupper);

Znaky v našom textovom reťazci budú prevedené na veľké písmená, napríklad televizi -> TELEVIZI:

Funkce strtoupper()
localhost

Funkcia nie je multi-byte safe. Znaky, ktoré nepatria do anglickej abecedy nebudú prevedené.

$text = "Říkali mi, že bych měl častěji chodit ven.";
$strtoupper = strtoupper($text);
print($strtoupper);

Niektoré znaky nebudú prevedené:

Funkce strtoupper()
localhost

Avšak rovnako ako pri funkcii strtolower() existuje jej ďalšie verzie s podporou kódovania. Funkcia mb_strtoupper() nám problematiku českých znakov vyrieši:

$text = "Pět set korun českých.";
$mb_strtoupper = mb_strtoupper($text, "UTF-8");
print($mb_strtoupper);

Za pomocou kódovanie UTF-8 dostaneme správny prevod malých písmen na veľké:

Funkce mb_strtoupper()
localhost

mb_convert_case

Je funkcia, ktorá konvertuje znaky v textovom reťazci na veľké alebo malé písmená v závislosti na použitom módu. Funkcia prijíma 3 parametre. Prvým je náš textový reťazec, druhým parametrom je mód, ktorý rozhodne o konvertovanie znakov, teda na veľké alebo malé písmená. Tretím parametrom je kódovanie. Príklady módov a ich použitie nájdete na tejto adrese na tejto adrese. Funkcia je multi-byte safe. Ukážme si príklad:

$text = "Všechny znaky budou velké.";
$mb_convert_case = mb_convert_case($text, MB_CASE_UPPER, "UTF-8");
print($mb_convert_case);

Znaky v textovom reťazci budú prevedené na veľké písmená pomocou módu MB_CASE_UPPER:

Funkce mb_convert_case()
localhost

Ak chceme všetky znaky zmeniť na malé písmená, využijeme módu MB_CASE_LOWER:

$text = "Všechny znaky budou malé.";
$mb_convert_case = mb_convert_case($text, MB_CASE_LOWER, "UTF-8");
print($mb_convert_case);

Znaky v textovom reťazci budú prevedené na malé písmená:

Funkce mb_convert_case()
localhost

Tak ako pri funkcii ucwords() môžeme zmeniť znaky na veľké písmená na začiatku každého slova, tak u funkcia mb_convert_case je toto možné pomocou módu MB_CASE_TITLE:

$text = "Každé slovo bude s velkým písmenem.";
$mb_convert_case = mb_convert_case($text, MB_CASE_TITLE, "UTF-8");
print($mb_convert_case);

Prvý znak u každého slova v textovom reťazci bude s veľkým písmenom:

Funkce mb_convert_case()
localhost

V ďalšej lekcii, Porovnávanie textových reťazcov v PHP , si ukážeme, ako porovnávať textové reťazce v PHP.


 

Predchádzajúci článok
Opakovanie textových reťazcov v PHP
Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
Porovnávanie textových reťazcov v PHP
Č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