13. diel - Vyhľadávania textových reťazcov v PHP II. časť
V minulej lekcii, Vyhľadávania textových reťazcov v PHP , sme si ukázali funkcie pre vyhľadávanie textových reťazcov.
V tomto diele vyhľadávania textových reťazcov a ich častí si ukážeme ďalšie užitočné funkcie, ktoré nám uľahčia našu prácu s textovými reťazcami.
strpos()
Funkcia strpos() nám v textovom reťazci nájde prvý hľadaný
reťazec a vypíše, na akej pozícii textového reťazca sa nachádza prvý
znak hľadaného reťazca. Funkcia prijíma celkom 3 parametre, kde prvým z
nich je náš textový reťazec, druhým parametrom je hľadaný reťazec a
posledným parametrom je začiatok, od ktorého znaku v textovom reťazci sa
bude hľadaný reťazec vyhľadávať. Pokiaľ zadáme zápornú hodnotu
začiatku, bude začiatok počítaný od konca textového reťazca. Funkcia
je case-sensitive, teda záleží na veľkosti písmen.
Diakritika (napr. š) je tu počítaná ako dva
znaky. Ukážme si pár príkladov použitia:
$strpos = "Venku mrzne a padá sníh"; print_r(strpos($strpos, "mrzne"));
V našom textovom reťazci hľadáme reťazec mrzne. Na výstup
dostaneme číslo 6, čo je vlastne pozície v textovom reťazci
prvého znaku v hľadanom reťazci, teda znaku m. Ďalší
príklad:
$strpos = "Jdeme dneska bobovat?"; print_r(strpos($strpos, "dneska", 13));
V tomto prípade náš hľadaný reťazec v našom textovom reťazci nájdeme
na pozícii 6, avšak podľa tretieho parametra nám vyhľadávania
začína až od trinásteho znaku, bude teda prehľadávaná
Odseknutá časť textového reťazca bobovat?". Vidíme, že náš
hľadaný reťazec sa tu nenachádza. Výsledkom bude false.
strrpos()
Funkcia strrpos() sa od predchádzajúcej funkcie
strpos() líši len v tom, že vyhľadáva posledné hľadaný
reťazec nachádzajúci sa v textovom reťazci a vráti pozíciu prvého znaku
hľadaného reťazca. Funkcia prijíma celkom 3 parametre, kde prvým z nich je
náš textový reťazec, druhým parametrom je hľadaný reťazec a posledným
parametrom je začiatok, od ktorého znaku v textovom reťazci sa bude hľadaný
reťazec vyhľadávať. Pokiaľ zadáme zápornú hodnotu začiatku, bude
začiatok počítaný od konca textového reťazca. Funkcia je
case-sensitive ako predchádzajúce funkcie a tiež nie je
multi-byte safe (diakritika sa berie ako dva znaky). Ukážme
si príklad:
$strrpos = "pak jsem si vzal boty, pak jsem klouzal na ledu"; print_r(strrpos($strrpos, "pak"));
Tu sa hľadaný reťazec "pak" v textovom reťazci nachádza
rovno dvakrát. Keďže funkcia strrpos() hľadá až posledný
zhodu, bude výstupom na stránku hodnota 23, teda dvadsiaty tretí
znak textového reťazca, čo je prvý znak nášho hľadaného reťazca. Teraz
pridáme tretí parameter a ešte k tomu záporný:
$strrpos = "Dneska jsem uklouzl na ledu a natloukl jsem si nos"; print_r(strrpos($strrpos, "jsem", -12));
V tomto prípade na stránku bude vypísaná hodnota 7. Textový
reťazec je teda zrezaný o dvanásť znakov od konca, textový reťazec teda
vyzerá takto: "Dneska jsem uklouzl na ledu a natloukl". Hľadaný
reťazec "jsem" sa vyskytuje v tomto odrezanú texte iba raz, teda
je to jediná zhoda.
stripos()
Rovnako ako funkcia strpos() nám v textovom reťazci nájde
prvý hľadaný reťazec a vypíše, na akej pozícii textového reťazca sa
nachádza prvý znak hľadaného reťazca. Funkcia prijíma celkom 3 parametre,
kde prvým z nich je textový reťazec, druhým je hľadaný reťazec a
posledným parametrom je začiatok, od ktorého znaku v textovom reťazci sa
bude hľadaný reťazec vyhľadávať. Na rozdiel od funkcie
strpos() je case-insensitive, teda nezáleží na
veľkosti písmen. Nie je multi-byte safe, tak si s diakritikou
dajte taky pozor:-) Ukážme si jednoduchý príklad:
$stripos = "Zebou mi RUCE!"; print_r(stripos($stripos, "ruce"));
Hľadaný reťazec bude nájdený aj napriek tomu, že veľkosť písmen
nezodpovedá zhode v textovom reťazci. Výstupom na stránku bude hodnota
9.
strripos()
Funkcia strripos() je podobná funkcii strrpos() s
rozdielom, že je case-insensitive. Funkčnosť je totožná,
teda vyhľadáva posledné hľadaný reťazec nachádzajúci sa v textovom
reťazci a vráti pozíciu prvého znaku hľadaného reťazca. Funkcia prijíma
celkom 3 parametre, kde prvým z nich je náš textový reťazec, druhým
parametrom je hľadaný reťazec a posledným parametrom je začiatok, od
ktorého znaku v textovom reťazci sa bude hľadaný reťazec vyhľadávať.
Príkladom môže byť:
$strripos = "Venku se oteplilo, VeNku je hezky."; print_r(strripos($strripos, "VENKU"));
Nezáleží tu na veľkosti písmen, hľadaný reťazec bude
v textovým reťazci nájdený na 19. pozíciu, keďže ide práve
o posledný zhodu v textovom reťazci. Výstupom na stránku bude teda hodnota
19. Ak by pred hľadaným reťazcom bol znak s diakritikou (napr.
č), bral by sa tento znak ako dva znaky. Výstupom by bola hodnota
20, aj keď to je reálne 19 znakov.
strpbrk()
Je funkcia, ktorá nájde hľadané znaky a po prvej zhode hľadaného znaku
v textovom reťazci vráti jeho zvyšok. Ak zhoda nebude nájdená, funkcia
vráti false. Funkcia prijíma celkom 2 parametre, prvým je náš
textový reťazec a druhým sú hľadané znaky. Funkcia je
case-sensitive a zároveň multi-byte safe.
Ukážme si pár príkladov:
$strpbrk = "teplota je pod nulou"; print_r(strpbrk($strpbrk, "jn"));
Tu je v textovom reťazci vyhľadaná zhoda s hľadanými znakmi a znak
j sa textovom reťazci vyskytuje skôr ako znak n, na
stránku bude teda vrátený zvyšok textového reťazca
"je pod nulou". Na poradí hľadaných znakov v parametri
nezáleží. Je jedno, či hľadáme "prv" znak n alebo
j, obaja znaky sa kontrolujú súčasne.
$strpbrk = "teplota je pod nulou"; print_r(strpbrk($strpbrk, "zů>!"));
Ak však hľadáme znaky, ktoré sa v textovom reťazci nenachádzajú,
dostaneme hodnotu false - nič sa teda nevypíše.
V ďalšej lekcii, Vyhľadávania textových reťazcov v PHP III. časť , si ukážeme ďalšie funkcie pre vyhľadávanie textových reťazcov.
