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
-
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024
Nejnovější
-
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024 -
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024
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.