PHP – práce s řetězci a PHP
Jak jsem slíbil v minulém díle, dnes (a příště) se podíváme na velmi důležitou skupinu funkcí – funkce pro práci s řetězci. Nejprve si však zopakujeme, co víme o řetězcích a práci s nimi z minulých dílů.
Operátorem, který slouží ke spojování („sčítání“) řetězců, je tečka (.). Zde je malý příklad:
|

Výsledkem přiřazení je pochopitelně to, že v proměnné $rceni je obsaženo pořekadlo Není kouře bez ohně. Všimněte si tečky na konci – protože je uvnitř uvozovek, pochopitelně neslouží jako operátor. Dalšími funkcemi, se kterými jsme se už seznámili, jsou Implode a Explode (je možné používat i jejich synonyma Join a Split, které jsou jistě povědomé programátorům v ASP). Tyto funkce slouží k rozdělování řetězce obsahujícího oddělovače do pole. Opět bude nejlepší příklad jejich použití:

|

Pomocí příkazu Explode přiřadíme do buněk pole části řetězce mezi oddělovačem #, tj. $pole[0] obsahuje Milan, $pole[1] Novák atd. Příkaz Implode je inverzní – po jeho vykonání máme v $data[2] řetězec, který se od původního liší tím, že místo # používá jako oddělovač :. Občas se může hodit příkaz List, který přiřazuje prvky pole do proměnných:

|

Přímo k jednotlivým znakům řetězce můžeme přistupovat, jako kdyby šlo o pole – např. u výše uvedeného řetězce $data je v $data[0] M, v $data[1] i, v $data[2] l atd. Důležité je si pamatovat, že podobně jako prvky pole jsou v PHP číslovány od nuly, pokud není určeno jinak, stejně jsou od nuly číslovány i znaky v řetězci. K tomu, abychom mohli zjistit, jak je řetězec dlouhý, slouží funkce StrLen (většina funkcí pro práci s řetězci začíná písmeny Str (string)). Funkce StrToUpper, resp. StrToLower, převádějí řetězec na samá velká, resp. samá malá písmena. Opět názorný příklad:

|

Nyní by měla být v proměnné $delka hodnota 27 (pokud jsem dobe počítal :-), v proměnné $velky_vyrok hodnota „VSICHNI KRETANE JSOU LHARI.“ a v proměnné $maly_vyrok hodnota „vsichni kretane jsou lhari.“ Co se stane, pokud budeme chtít vše hezky česky? Záleží na instalaci PHP :-), funkce StrToUpper a StrToLower s českými znaky správně fungovat mohou, ale nemusí. To nám však nemusí nijak vadit, protože máme k dispozici velmi šikovnou nahrazovací funkci StrTr, která je o dost univerzálnější a funguje bez problémů. Jednou z možností jejího využití je odstranění českých znaků z řetězce:

|

Funkce StrTr má celkem tři argumenty – vstupní řetězec, řetězec znaků, které se mají nahradit, a řetězec zanků, kterými se mají nahradit. Funkce nahradí ve vstupu všechny výskyty znaku á znakem a, znaku ä znakem a, znaku č znakem c, znaku ď znakem d atd. Vždy se bere postupně po jednom znaku z druhého a třetího řetězce ve funkci. Z výše uvedeného příkladu by vše mělo být jasné.
Shrnutí anebo co si je třeba pamatovat
- Tečka (.) spojuje řetězce.
- Explode (nebo Split) rozdělí řetězec do pole, Implode (nebo Join) vše zase spojí.
- StrLen slouží k zjištění délky řetězce.
- StrToUpper převádí řetězec na velká písmena, StrToLower na malá. Tyto funkce mohou mít problémy s češtinou.
- Univerzální nahrazovací funkce, která se hodí např. k odstranění písmen s diakritikou z textu, je StrTr.
V příštím díle se podíváme na další základní funkce pro práci s řetězci – na zjišťování, zda řetězec obsahuje daný podřetězec, a na to, jak nahradit nejen znak za znak (jak to umí funkce StrTr).
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024 -
-
inPage AI: Revoluční nástroj pro tvorbu webů
3. července 2024 -
Nejnovější
-
1,5 milionu CZ domén: Co to znamená pro český internet?
31. března 2025 -
Co je to TTL a proč na něm záleží?
25. března 2025 -
Kdo má nejrychlejší WordPress hosting v ČR?
18. března 2025 -
Jakub
Kvě 10, 2012 v 13:42Když použiji funci
StrTr ($jazykolam, „áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ“, „aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ“);
tak mi například č převede na oe :-(
Všechny soubory jsou přitom v UTF-8 bez BOM.