IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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.


 

Predchádzajúci článok
Vyhľadávania textových reťazcov v PHP
Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
Vyhľadávania textových reťazcov v PHP III. časť
Článok pre vás napísal Pavel Vaněček
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity