Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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 9 - Malá a velká písmena v textovém řetězci

V minulé lekci, Opakování textových řetězců v PHP, jsme se dozvěděli, jak opakovat jednotlivé znaky v textových řetězcích a části textových řetězců.

V této lekci kurzu PHP funkcí si ukážeme, jak v textových řetězcích měnit velikost písmen, tedy velká písmena na malá a naopak. Díky těmto funkcím můžeme při psaní dlouhých textů zajistit, že například na začátku věty bude vždy velké písmeno.

lcfirst()

Název je ze zkratky lc = Lower Case (malé písmeno), first = první. Je to funkce, která první znak v textovém řetězci změní z velkého písmena na malé. Funkce lcfirst() přijímá pouze jeden parametr, kterým je náš textový řetězec. Podmínkou je, aby se znak nacházel v anglické abecedě. Ukažme si jednoduchý příklad na tuto funkci:

$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šem textovém řetězci se změní první velké písmeno na začátku řetězce na malé, tedy Příliš -> příliš. Funkce **NEMĚNÍ velké písmeno za malé u každé věty! Výstupem na stránku je:

Funkce lcfirst()
localhost

Pokud se první znak nenachází v anglické abecedě, dostaneme chybně změněný textový řetězec. Důvodem je, že funkce lcfirst() není multi-byte safe.

Chybně změněný řetězec může být například tento:

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

Řetězec bude chybně převeden nebo vůbec:

Funkce lcfirst()
localhost

ucfirst()

Je podobnou funkcí jako lcfirst(), název je taktéž zkratka: uc = Upper Case. Rozdílem je, že první znak, který se nachází v anglické abecedě, je změněn z malého písmena na velké. Funkce ucfirst() přijímá pouze jeden parametr, kterým je náš textový řetězec. Příkladem funkce ucfirst() může být:

$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);

Jak si můžeme všimnout, první znak v našem textovém řetězci začíná malým písmenem. Jelikož jsme napsali větu, je vhodné ji psát s velkým písmenem. Řetězec je umístěn ve funkci ucfirst(), bude tedy jeho první znak změněn na velké písmeno. Avšak si opět musíme dát pozor, že u druhé věty k žádné změně nedojde. Druhá věta se totiž slučuje s naším textovým řetězcem a je tedy jeho součástí:

Funkce ucfirst()
localhost

Dojde tedy ke změně malého písmena na velké na začátku řetězce u slova větu -> Větu. Druhá věta zůstane nezměněna.

Funkce ucfirst() není multi-byte safe. Pokud první znak v řetězci nebude z anglické abecedy, dojde k chybnému převodu.

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

Řetězec bude chybně převeden nebo vůbec:

Funkce ucfirst()
localhost

ucwords()

Je funkce, která v každém slovu v textovém řetězci změní první znak anglické abecedy z malého písmena na velký. Znaky uc v názvu funkce znamená zase Upper Case. Funkce ucwords() přijímá celkem 2 parametry, kde prvním z nich je náš textový řetězec. Druhý parametr je tzv. delimitér, pomocí kterého můžeme specifikovat, kde začíná další slovo. Delimitér je většinou nějaký separátor, tedy znak, který dělí slova. Ukažme si jednoduchý příklad na funkci ucwords():

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

První znak u každého slova bude změněn z malého písmena na velké:

Funkce ucwords()
localhost

Nyní si vymyslíme textový řetězec, ve kterém chceme slova rozdělovat jiným znakem, než jen mezerou. Pomocí druhého parametru funkce blíže specifikujeme, jakým znakem tedy slova dělíme. Vybereme si tudíž separátor:

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

Pomocí separátoru funkce správně převede malá písmena na velká. Výstupem na stránku je:

Funkce ucwords()
localhost

Pokud bychom za každým separátorem slova udělali mezeru, tak znak na začátku slova nebude převeden, výjimkou je však první slovo:

Funkce ucwords()
localhost

Funkce ucwords() není multi-byte safe. Znaky, které nejsou z anglické abecedy a neexistuje pro ně žádné velké písmeno, nebudou převedeny.

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

První znak ř nebude převeden a výstup na stránce bude:

Funkce ucwords()
localhost

strtolower()

strtolower() je funkce, která změní v textovém řetězci všechna velká písmena na malá. Funkce přijímá pouze jeden parametr, kterým je textový řetězec. Uveďme si příklad:

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

Všechna velká písmena budou převedena na malá, tedy Adam -> adam, Alžbětou -> alžbětou, Plzni -> plzni. Na stránce poté uvidíme:

Funkce strtolower()
localhost

Funkce strtolower() není multi-byte safe. Znaky, které nejsou z anglické abecedy nebudou převedeny.

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

Výsledkem na stránce bude:

Funkce strtolower()
localhost

Pokud však chceme přidat podporu převodu i jiných znaků, využijeme multibyte safe funkci mb_strtolower(), která přijímá o jeden parametr navíc, do kterého doplníme kódování.

Ukažme si příklad funkce mb_strtolower():

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

Všechny znaky v řetězci budou převedeny podle kódování UTF-8 na malá písmena, tedy Byli -> byli a Žíchovec -> žíchovec:

Funkce mb_strtolower()
localhost

strtoupper()

Je funkce, která změní všechna malá písmena z anglické abecedy v textovém řetězci na velká. Funkce přijímá pouze jeden parametr, kterým je textový řetězec:

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

Znaky v našem textovém řetězci budou převedeny na velká písmena, například televizi -> TELEVIZI:

Funkce strtoupper()
localhost

Funkce není multi-byte safe. Znaky, které nepatří do anglické abecedy nebudou převedeny.

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

Některé znaky nebudou převedeny:

Funkce strtoupper()
localhost

Avšak stejně jako u funkce strtolower() existuje její další varianta s podporou kódování. Multibyte safe funkce mb_strtoupper() nám problematiku s diakritikou vyřeší :)

Ukažme si příklad:

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

Za pomocí kódování UTF-8 dostaneme správný převod malých písmen na velká:

Funkce mb_strtoupper()
localhost

mb_convert_case

Je funkce, která konvertuje znaky v textovém řetězci na velká nebo malá písmena v závislosti na použitém módu. Funkce přijímá 3 parametry. Prvním je náš textový řetězec, druhým parametrem je mód, který rozhodne o konvertování znaků, tedy na velká nebo malá písmena. Třetím parametrem je kódování. Příklady módů a jejich použití najdete na této adrese na této adrese. Funkce je multi-byte safe. Ukažme si pří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 textovém řetězci budou převedeny na velká písmena pomocí módu MB_CASE_UPPER:

Funkce mb_convert_case()
localhost

Pokud chceme všechny znaky změnit na malá písmena, 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 textovém řetězci budou převedeny na malá písmena:

Funkce mb_convert_case()
localhost

Tak jako u funkce ucwords() můžeme změnit znaky na velká písmena na začátku každého slova, tak u funkce mb_convert_case je toto možné pomocí 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);

První znak u každého slova v textovém řetězci bude s velkým písmenem:

Funkce mb_convert_case()
localhost

V následujícím kvízu, Kvíz - Vlastnosti, tagy a nahrazování řetězců v PHP, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.


 

Předchozí článek
Opakování textových řetězců v PHP
Všechny články v sekci
PHP funkce
Přeskočit článek
(nedoporučujeme)
Kvíz - Vlastnosti, tagy a nahrazování řetězců v PHP
Článek pro vás napsal Pavel Vaněček
Avatar
Uživatelské hodnocení:
6 hlasů
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity