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:
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:
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:
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:
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é:
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:
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:
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:
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:
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:
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
:
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
:
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é:
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é:
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
:
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á:
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:
V ďalšej lekcii, Porovnávanie textových reťazcov v PHP , si ukážeme, ako porovnávať textové reťazce v PHP.