PHP – práce s řetězci v PHP podruhé
V předchozím článku jsme si ukázali základy toho, jak pracovat s řetězci v PHP. V tomto díle pokročíme k složitějším funkcím, které slouží k vyhledávání a nahrazování. Na úvod si ovšem dáme ještě něco funkcí relativně jednodušších.
K získání části řetězce slouží funkce SubStr. Má tři parametry – řetězec, pozici 1. znaku a délku. Vrací pochopitelně část řetězce určené délky od daného znaku. Pokud je pozice 1. znaku záporné číslo, řetězec bude se pozice počítat od konce. Pokud je záporná délka, bude řetězec tolik zanků od konce končit. Není-li délka vůbec zadána, funkce vrátí vše od prvního znaku do konce řetězce. Opět nejlepší ilustrací jsou příklady:
|
Například pro ošetření vstupních dat je užitečná funkce Trim, která ořeže zbytečné znaky (tj. mezery a formátovací znaky, jako je třeba znak pro nový řádek). Jejími blízkými příbuznými jsou funkce LTrim (ořezává jen zleva) a RTrim (ořezává jen zprava). Příklad:
|
K nahrazení určitého podřetězce v řetězci jiným slouží funkce Str_Replace (ta byla podle on-line manuálu do PHP přidána ve verzi 3.0.6, ale spolehlivě pracovala až od verze 3.0.8 – tyto starší verze se však už vyskytují zřídka). Obsahuje tři parametry – CO nahradit, ČÍM nahradit, V ČEM nahradit. Nejlépe ilustruje následující příklad:
|
Výše uvedený příklad nahradí všechny výskyty řetězce jmeno řetězcem Pavle, takž evýsledkem bude pozdrav Vítej na mé stránce, Pavle. Co dělat, pokud chceme tuto funkci využívat, ale naše verze PHP patří k těm starším? Snadná pomoc – naštěstí existuje vedle Str_Replace funkce EReg_Replace, která pracuje úplně stejně (to není tak úplně pravda, protože EReg_Replace toho umí více, ovšem pro jednoduché nahrazování je zase pomalejší). Pokud tedy budete mít se Str_Replace problémy, nahraďte ji EReg_Replace, výsledek bude stejný (tedy správný, ne že by byly zase problémy :-).
Často potřebujeme zjistit, zda se v nějkém řetězci vyskytuje určitý podřetězec. K tomu nám poslouží funkce StrPos, která vrací pozici hledaného textu v řetězci. První parametr je tedy řetězec, druhý text, který v něm hledáme. Pokud řetězec podřetězec neobsahuje, funkce vrací false. V tom se ovšem skrývá malý problém – flase odpovídá hodnotě nula, proto se funkce chová stejně i tehdy, pokud je hledaný text úplně na začátku řetězce. Lze to obejít různými způsoby, mně připadá nejlepší na začátek prohledávaného řetězce přidat nějaký bezproblémový znak (např. mezeru), potom se funkce chová tak, jak potřebujeme (pokud však chceme dále pracovat s pozicí nalezeného textu, musíme kvůli přidané mezeře odečíst jedna!). Takto může vypadat netradiční test HIV pozitivity :-):
|
Pokud řetězec $pacient obsahuje text HIV (díky přidané mezeře může být tento text i na začátku), funkce StrPos vrátí nemulovou hodnotu, podmínka je splněna a zavolá se funkce, která pacienta pošle na léčení. K tomuto poněkud abstraktnímu příkladu připojím jeden užitečnější:
|
Proměnná $HTTP_USER_AGENT je jedna z takzvaných proměnných prostředí a obsahuje řetězec, který identifikuje prohlížeč a operační systém návštěvníka. Další proměnnou prostředí, o které jsem se už zmiňoval, je $REMOTE_ADDR, která obsahuje IP adresu, ze které přišel požadavek na stránku. Výše uvedený příklad může snadno otestovat, zda uživatel používá prohlíže Internet Explorer 5. Tento a podobné testy se dají využít třeba k přizpůsobení stránky konkrétnímu prohlížeči.
Shrnutí anebo co si je třeba pamatovat
- Funkce SubStr vrací část řetězce.
- Funkce Trim, LTrim a RTrim ořezávají zbytečné znaky (mezery apod.).
- Str_Replace a EReg_Replace se hodí k nahrazování určitého podřetězce jiným.
- StrPos vrací pozici hledaného textu v řetězci. Pokud řetězec text neobsahuje, vrací false.
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
-
Thunderbolt 4 vs. OCuLink: Přišel čas na upgrade?
27. května 2024 -
AI v programování: Jak používat GitHub Copilot (část 1)
12. února 2024 -
Optimalizace a zlepšení výkonu kódu: tipy a triky
14. srpna 2023
Nejnovější
-
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 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
dalkal
Bře 28, 2013 v 15:58Zde je odkaz, kde se řeší náhrady za Google reader, já osobně ve Win používám
čtečku RSS bandit, je skoro stejná jako GR.
https://docs.google.com/spreadsheet/ccc?key=0ApTo6f5Yj1iJdFRfWmhUVjV0WkktTjJhUUE4dGR5WUE#gid=0