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.