Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

14. diel - Vyhľadávania textových reťazcov v PHP III. časť

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

V treťom dieli lekcie 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.

substr_count()

Funkcia substr_count() nám spočíta počet výskytov podreťazca v textovom reťazci. Funkcia vracia celočíselné hodnoty (počet výskytov podreťazca). Prijíma celkom 4 parametre, prvým z nich je náš textový reťazec, druhým je hľadaný podreťazec, tretí parameter je pozícia začiatku od ktorej bude funkcia počítať výskyty podreťazca. Posledným parametrom je dĺžka nášho reťazca, na ktorom budú hľadané výskyty podreťazca. Posledné dva parametre nie sú povinné. Funkcia je case-sensitive (záleží na veľkosti písmen). Funkcia nie je multibyte safe!. Nepodporuje teda diakritiku as použitím tretieho a štvrtého parametra môžeme tak dostať chybný výsledok výstupu.

Ak je súčet tretieho a štvrtého parametra väčšia ako dĺžka textového reťazca, dostaneme chybovú hlášku s varovaním o prekročení dĺžky reťazca.

Ukážme si niektoré príklady:

$substr_count = "Říkáme mu zaseklý, zaseklý gramofon";
print_r(substr_count($substr_count,"zaseklý"));

Funkcia nám na výstup vráti hodnotu 2, pretože podreťazec "zaseklý" bol nájdený dvakrát. Ďalší príklad s tretím parametrom:

$substr_count = "Dneska nejdu nikam, nejdu!";
print_r(substr_count($substr_count, "nejdu", 13));

Pridaním tretieho parametra sme zaistili posunutie začiatku, od ktorého bude funkcie vyhľadávať výskyty podreťazca. Keďže je začiatok posunutý presne o 13 znakov, funkcia bude vyhľadávať zhody len na časti reťazca "nikam, nejdu!**". Na výstup teda dostaneme hodnotu 1. Príklad so všetkými parametrami:

$substr_count = "„nikdy neodstoupim, nikdy!“";
print_r(substr_count($substr_count, "nikdy", 0, 18));

Pridaním štvrtého parametra určíme novú dĺžku textového reťazca, na ktorej bude funkcie vyhľadávať podreťazec "nikdy". Podreťazec bude teda vyhľadávaný na úseku textu "„nikdy neodstoupim" a na výstup dostaneme hodnotu 1.

Funkcia substr_count() nespočíta prekrývajúce sa podreťazca. napríklad:

$substr_count = "xyzxyzxy";
print_r(substr_count($substr_count, "xyzxy"));

Na výstup dostaneme hodnotu 1, teda bol nájdený iba jeden výskyt zadaného podreťazca.

Multibyte safe variantom funkcia je mb_substr_count(), avšak nemôžeme tu určiť odkiaľ bude funkcia prehľadávať textový reťazec (tretí parameter) ani novú dĺžku reťazca (štvrtý parameter). Ako tretí parameter funkcia prijíma typ kódovania (napr. UTF-8).

str_starts_with()

Je funkcia pre zistenie, či náš textový reťazec začína zadaným textovým reťazcom. Táto funkcia je dostupná od verzie PHP 8.0 a prijíma iba dva parametre. Prvým je náš textový reťazec a druhým parametrom je reťazec, ktorý v prvom reťazci vyhľadá, či ním začína alebo nie. Funkcia je case-sensitive, teda záleží na veľkosti písmen. Ukážme si niektoré príklady použitia:

if (str_starts_with('Byl o tom poučen', 'Byl')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Ak náš textový reťazec začína reťazcom "Byl", potom funkcia vráti hodnotu true a vykoná sa vypísanie textu "Pravda" z bloku podmienky. Ďalší príklad:

if (str_starts_with('BYL o tom poučen', 'byl')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Tu môžeme vidieť opačný prípad. Keďže záleží na veľkosti písmen, vráti funkcia hodnotu false aj napriek tomu, že sa v prvom reťazci slovo "byl" vyskytuje, ale s veľkými písmenami. Na stránku sa nám teda vypíše "Nepravda".

if (str_starts_with('abc', '')) {
    echo "Vždy pravda!";
}

Je vždy pravdou, že textové reťazce začínajú prázdnym reťazcom. Na stránke teda uvidíme text "Vždy pravda!".

str_ends_with()

Je funkcia pre zistenie, či náš textový reťazec končí zadaným reťazcom. Táto funkcia je dostupná od verzie PHP 8.0 a prijíma iba dva parametre. Prvým je náš textový reťazec a druhým parametrom je reťazec, ktorý v prvom reťazci vyhľadá, či ním reťazec končí alebo nie. Funkcia je case-sensitive, teda záleží na veľkosti písmen. Ukážme si nejaké príklady:

if (str_ends_with('Něco končí a něco začíná', 'začíná')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Tu môžeme vidieť, že naozaj náš textový reťazec končí reťazcom "začíná". Funkcia teda vráti hodnotu true a vypíše sa na stránku text "Pravda". Ďalší príklad:

if (str_ends_with('Něco končí a něco začíná', 'ZAČÍNÁ')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Rovnako ako pri funkcii str_starts_with() aj tu záleží na veľkosti písmen. Textový reťazec teda nekončí reťazcom "ZAČÍNÁ" a preto sa na stránku vypíše "Nepravda". Posledný príklad:

if (str_ends_with('abc', '')) {
    echo "Vždy pravda!";
}

Je vždy pravdou, že textové reťazce končí a začínajú prázdnym reťazcom (respektíve hodnotou NULL). Na stránke teda uvidíme text "Vždy pravda!".

str_contains()

Funkcia str_contains() nám overí, či sa v našom textovom reťazci nachádza hľadaný reťazec a potom vráti hodnotu true v prípade úspechu a hodnotu false v prípade opačnom. Táto funkcia je dostupná od verzie PHP 8.0 a prijíma tiež iba dva parametre. Prvým je náš textový reťazec a druhým je hľadaný reťazec. Funkcia je case-sensitive, teda záleží na veľkosti písmen. Ukážme si ukážky:

if (str_contains('S radostí jsem mu oznámil, že vyhrál.', 'mu')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Ak sa v našom textovom reťazci nachádza hľadaný reťazec, bude na stránku vypísaný text "Pravda" v opačnom prípade "Nepravda". Keďže sa slovo "mu" vyskytuje v textovom reťazci, vypíše sa text "Pravda". Ďalší príklad:

if (str_contains('S radostí jsem mu oznámil, že vyhrál.', 'RADOSTÍ')) {
    echo "Pravda";
} else {
    echo "Nepravda";
}

Funkcia je case-sensitive, tým pádom nebude hľadaný reťazec v našom textovom reťazci nájdený a vypíše sa "Nepravda". Ďalšie a zároveň posledný príklad:

if (str_contains('abc', '')) {
    echo "Vždy pravda!";
}

Ak kontrolujeme existenciu prázdneho reťazca, dostaneme vždy hodnotu true ako u funkcií vyššie. Na stránke teda uvidíme text "Vždy pravda!".

V ďalšej lekcii, Prevody textových reťazcov v PHP , si ukážeme, ako prevádzať textové reťazce v PHP. Ukážeme si funkcie hex2bin(), bin2hex(), base_convert() a ord().


 

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