Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

12. diel - Vyhľadávania textových reťazcov v PHP

V minulej lekcii, Porovnávanie textových reťazcov v PHP II. časť , sme si ukázali ďalšie funkcie pre porovnávanie textových reťazcov.

V tejto lekcii funkcií v PHP si vysvetlíme užitočné funkcie pre vyhľadávanie textových reťazcov a ich častí.

strspn()

Je funkcia, ktorá vráti počet hľadaných znakov v reťazci. Pokiaľ sa ale v reťazci nachádza pred hľadanými znakmi znak, ktorý medzi ne nepatrí, vráti funkcia hodnotu 0. Funkcia prijíma 4 parametre, kde prvým z nich je náš textový reťazec. Druhým parametrom je hľadaný znak alebo skupina znakov. Tretím parametrom je pozícia, odkiaľ má funkcie v textovom reťazci začať vyhľadávať (nepovinný). Posledným parametrom je dĺžka reťazca (v aké veľké časti reťazca budú znaky hľadané) (nepovinný). Funkcia je binary-safe. Ukážme si príklady:

$strspn = strspn("Znaky se nacházejí v této větě.",'Zzykan');
print_r($strspn);

Výstupom na stránku bude počet znakov, ktoré sa zhodujú v hľadané maske 'Zzykan', avšak len do prvého znaku, ktorý sa v maske nenachádza, v tomto prípade je to medzera. Dostaneme teda hodnotu 5.

$strspn = strspn("Hledané znaky se nacházejí v této větě.",'Zzykan');
print_r($strspn);

V tomto prípade funkcie vráti hodnotu 0, keďže sa pred maskou hľadaných znakov nachádza znaky, ktoré sa v nej nevyskytujú. Sčítanie znakov teda pokračuje do prvej nezhody, čo je písmeno H, ktoré nebude započítané.

$strspn = strspn("Tyto znaky se nacházejí v této větě.",'Zzykan', 5);
print_r($strspn);

Pridaním tretieho parametra začneme znaky vyhľadávať až od 5. znaku. Reťazec "Tyto " spoločne s medzerou bude preskočený a zhody či nezhody znakov v maske nebudú overené. Funkcia teda začne overovať až od textového reťazca "znaky" kde pri prvej nezhode znaku reťazca s maskou bude počítanie ukončené. Na výstup dostaneme hodnotu 5.

$strspn = strspn("Tyto znaky se nacházejí v této větě.",'Zzykan', 5, 3);
print_r($strspn);

Rovnako ako v predchádzajúcom príklade, vyhľadávanie a počítanie znakov je posunuté o 5 znakov, avšak sme tiež definovali 4. parameter, ktorý nám limituje dĺžku zvyšku reťazca, v tomto prípade na 3 znaky, teda iba porovnávame reťazec "zna". Keďže sa všetky tieto znaky nachádzajú v maske hľadaných znakov, bude na výstup vrátená hodnota 3.

strcspn()

Je funkcia, ktorá vráti počet znakov (teda i medzier) nájdených za prvým hľadaným znakom. Funkcia prijíma 4 parametre, kde prvým z nich je náš textový reťazec. Druhým parametrom je hľadaný znak alebo skupina znakov (voliteľné parametre. Tretím parametrom je pozícia, odkiaľ má funkcie v textovom reťazci začať vyhľadávať (nepovinný). Posledným parametrom je dĺžka reťazca (v aké veľké časti reťazca budú znaky hľadané), parameter je taktiež voliteľný. funkcia je binary-safe, avšak diakritiku zase počíta ako dva znaky. Ukážme si príklady:

$strcspn = strcspn("Hello world!",'w');
print_r($strcspn);

V tomto textovom reťazci bude vyhľadaný prvý znak 'w' a na výstup dostaneme počet znakov za hľadaným znakom. V tomto prípade je to číslo 6.

Ak chceme určiť odkiaľ bude funkcia vyhľadávať, pridáme druhý parameter:

$strcspn = strcspn("Hello world!",'w', 1);
print_r($strcspn);

Tu vyhľadávanie začne až od druhej pozície, teda znakom 'e'. Na výstup dostaneme číslo 5.

Ak chceme obmedziť veľkosť vyhľadávania v textovom reťazci, využijeme tretí parameter:

$strcspn = strcspn("Hello world!",'w', 0, 4);
print_r($strcspn);

V tomto prípade rovnako ako u predchádzajúceho príkladu hľadáme znak 'w' od začiatku reťazca (od pozície 0), ale až do pozície 4, textový reťazec teda nie je prehľadávaný celý, ale iba jeho časť "Hell". Môžeme si všimnúť, že v tejto časti reťazca sa hľadaný znak nenachádza, funkcia teda vráti dĺžku časti reťazca, teda 4.

strstr()

Je funkcia, ktorá nájde vyhľadávaný reťazec a vráti hľadaný reťazec so zvyškom textového reťazca. Funkcia prijíma celkom 3 parametre, kde prvým z nich je textový reťazec, druhým parametrom je vyhľadávaný reťazec a tretím boolean hodnota (true alebo false), ktorá nastavuje, či bude vrátený zvyšok textového reťazca od začiatku k zhode vyhľadaného reťazca (true), alebo od zhody vyhľadaného reťazca ku koncu (false). Funkcia je case-sensitive, teda záleží na veľkosti písmen. Pre lepšie pochopenie si túto problematiku ukážme na príkladoch:

$strstr = "Jirka přijede později.";
print_r(strstr($strstr, "přijede"));

V textovom reťazci "Jirka přijede později." bude vyhľadaný reťazec "přijede" a vráti hľadaný reťazec so zvyškom celkového reťazca. Keďže sme nenastavili tretí parameter, je jeho defaultná hodnota false. Výstupom na stránku teda bude "přijede později.".

$strstr = "Jirka přijede později.";
print_r(strstr($strstr, "přijede", true));

Príklad vyššie je rovnaký ako v príklade vyššie, len sme uviedli tretí parameter. Ten zabezpečí, že nám na výstup vráti reťazec od začiatku textového reťazca do hľadaného reťazca. Hľadaný reťazec ale už nebude tvoriť súčasť výstupu na stránku. Výstupom na stránku teda bude "Jirka".

Pokiaľ zadáme prázdny hľadaný reťazec, dostaneme výnimku "Empty needle".

stristr()

Táto funkcia je má totožné vlastnosti, ako funkcia strstr(). Jedinou výnimkou je však vlastnosť case-insensitive, teda nezáleží na veľkosti písmen. Je to teda funkcie, ktorá nájde vyhľadávaný reťazec a vráti hľadaný reťazec so zvyškom textového reťazca. Prijíma celkom 3 parametre, kde prvým z nich je textový reťazec, druhým parametrom je vyhľadávaný reťazec a tretím boolean hodnota (true alebo false). Ten nastavuje, či bude vrátený zvyšok textového reťazca od začiatku k zhode vyhľadaného reťazca (true) alebo od zhody vyhľadaného reťazca ku koncu (false). Ukážme si príklad, v ktorom je táto funkcia oproti strstr() rozdielna:

$stristr = "Jirka přijede později.";
print_r(stristr($stristr, "PřijedE"));

Výstup bude rovnaký ako pri funkcii strstr(), ale hľadaný reťazec bude vyhľadaný aj hoci obsahuje rozdielnu veľkosť znakov.

Pokiaľ zadáme prázdny hľadaný reťazec (2. parameter), dostaneme taktiež výnimku "Empty needle".

strchr()

Táto funkcia je aliasom funkcia strstr(), teda má totožné vlastnosti. Nájde vyhľadávaný reťazec a vráti hľadaný reťazec so zvyškom textového reťazca. Funkcia prijíma celkom 3 parametre, kde prvým z nich je textový reťazec, druhým parametrom je vyhľadávaný reťazec a tretím boolean hodnota (true alebo false). Tá nastavuje, či bude vrátený zvyšok textového reťazca od začiatku k zhode vyhľadaného reťazca (true), alebo od zhody vyhľadaného reťazca ku koncu (false). Funkcia je case-sensitive, teda záleží na veľkosti písmen. Ukážme si príklad:

$strchr = "Jirka přijede později.";
print_r(strchr ($strchr , "později"));

Rovnako ako pri funkcii strstr(). Bude sa vyhľadá hľadaný reťazec v našom zadanom textovom reťazci a vráti zvyšok textového reťazca spoločne s hľadaným reťazcom. Výstupom teda je "později.".

strrchr()

Je funkcia, ktorá nájde posledný zhodu vyhľadávaného znaku v našom textovom reťazci a vráti zvyšok textového reťazca. Funkcia prijíma celkom 2 parametre, kde prvým z nich je textový reťazec, druhým parametrom je vyhľadávaný znak. Druhý parameter môže síce obsahovať viac znakov (slovo), ale do úvahy sa bude brať iba prvý znak. Funkcia je case-sensitive. Ukážme si príklad:

$strrchr = "Aleš došel nakoupit potraviny, Karel došel koupit dárky.";
print_r(strrchr($strrchr, "došel"));

Funkcia strrchr() nájde znak "d" (pretože sa berie do úvahy iba prvý znak v 2. parametra) v slove "dárky" v druhej vete, pretože ide o posledný zhodu. Funkcia vráti zvyšok textového reťazca vrátane znaku zhody. Výstupom je teda textový reťazec "dárky.".

Dobrým príkladom pre túto funkciu je napríklad k získaniu názvu súboru z cesty:

$strrchr = "/var/www/html/index.php";
print_r(strrchr($strrchr, "/"));

Na výstupe funkcia bude /index.php.

Pokiaľ zadáme prázdny hľadaný reťazec, tak oproti predchádzajúcim funkciám na stránke neuvidíme žiadnu chybovú hlášku ani hodnotu. Skutočnosťou je, že funkcia vráti boolean s hodnotou false.

V ďalšej lekcii, Vyhľadávania textových reťazcov v PHP II. časť , si ukážeme ďalšie funkcie pre vyhľadávanie textových reťazcov.


 

Predchádzajúci článok
Porovnávanie textových reťazcov v PHP II. časť
Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
Vyhľadávania textových reťazcov v PHP II. č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