PHP funkce strpos - výskyt podřetězce v řetězci
13. 07. 2020Funkce najde pozici prvního výskytu podřetězce v řetězci, což lidsky znamená, že ověří, jestli předaný řetězec obsahuje hledaný výraz a vrátí jeho pozici.
Funkce strpos
vrací pozici hledaného textu v řetězci. Pokud řetězec obsahuje, vrátí pozici jeho prvního znaku jako integer
(celé číslo), pokud neobsahuje, vrátí false
(nepravda). Toho můžeme využít při testování řetězců.
Parametry
Parametr | Datový typ | Výchozí hodnota | Poznámka |
---|---|---|---|
$haystack | string | povinné | Řetězec, ve kterém se bude hledat |
$needle | mixed | povinné | Pokud není řetězec, převede se na číslo (integer) a použije se jako pořadová hodnota znaku. |
$offset | int | 0 | Pokud je nastavena nějaká hodnota, funkce nejprve odpočítá uvedený počet znaků od začátku řetězece a až poté začne vyhledávat. Na rozdíl od funkce strrpos a strripos nemůže být offset záporný. |
Výskyt řetězce v textu
Často potřebujeme zjistit, jestli text obsahuje určitý řetězec. Bohužel v PHP neexistuje funkce constains
, ale můžeme si ji snadno napsat sami:
/**
* Obsahuje $haystack řetězec $needle?
*/
function contains(string $haystack, string $needle): bool
{
return strpos($haystack, $needle) !== false;
}
Podle toho lze sestavit například podmínka, zda řetězec obsahuje druhý řetězec a podle toho se dál zařídit:
if (strpos('[email protected]', '@') !== false) {
// E-mail obsahuje zavináč
}
Výhoda této metody ověření výskytu řetězce je její extrémní rychlost. Pokud potřebujete ověřit složitější shodu, budou potřeba regulární výrazy.
Návratové hodnoty
Funkce vždy vrátí pozici řetězce jako celé číslo (int
), nebo hodnotu false
(nepravda), pokud řetězec neobsahuje hledanou frázi.
Další zdroje
Jan Barášek Více o autorovi
Autor článku podniká jako fullstack senior developer v Praze. Spravuje 300 různě velkých webových projektů, fungujících dodnes. Během spolupráce nabral hluboké zkušenosti, které na tomto webu předává dál.
Rád vám pomůžu:
Kontakt Konzultace a služby Nabídka spolupráce