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()
.