PHP: Kontrola, zda řetězec obsahuje podřetězec

Jak zkontrolovat, zda řetězec obsahuje jiný řetězec nebo podřetězec v PHP Určení, zda řetězec obsahuje jiný řetězec, podřetězec, slovo nebo znak, je v PHP častým požadavkem. V tom...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

14. 11. 2025

PHP: Kontrola, zda řetězec obsahuje podřetězec

Jak zkontrolovat, zda řetězec obsahuje jiný řetězec nebo podřetězec v PHP

Určení, zda řetězec obsahuje jiný řetězec, podřetězec, slovo nebo znak, je v PHP častým požadavkem. V tomto příspěvku představím nejspolehlivější a nejmodernější způsoby, jak tuto úlohu provést. Každá metoda je stručná, přesná a vychází z aktuálních osvědčených postupů jazyka PHP.

Používání stránek str_contains() v PHP 8 a novějším

str_contains() je nejjednodušší a nejčitelnější způsob, jak zkontrolovat, zda řetězec obsahuje podřetězec nebo zda řetězec obsahuje slovo.

if (str_contains($haystack, $needle)) {
echo "Found";
} else {
echo "Not found";
}

Klíčové body:

  • Vrací true, pokud podřetězec existuje, jinak false.
  • Ideální pro většinu situací, kdy potřebujete rychle ověřit, zda řetězec obsahuje řetězec.
  • If $needle je prázdný řetězec, funkce vždy vrátí true. Ověřit $needle pokud to není žádoucí.

str_contains() je doporučenou moderní funkcí a nejpřehlednějším způsobem vyhledávání v řetězcových operacích.

Používání stránek strpos() a stripos() pro kontroly podle polohy

Pro verze PHP před 8 nebo v případě, že potřebujete přesnou pozici shody, použijte následující příkaz strpos().

if (strpos($haystack, $needle) !== false) {
echo "Found";
}

Důležité informace:

  • Vrací index shody založený na nule nebo false, pokud nebyla nalezena.
  • Vždy používejte !== false protože pozice 0 je platná a jinak by byla chybně interpretována.
  • stripos() provede vyhledávání bez rozlišení velkých a malých písmen.

Tyto funkce použijte, pokud potřebujete vědět, kde se podřetězec vyskytuje, nebo pokud pracujete na serverech, které stále používají starší verze PHP.

Používání stránek preg_match() pro hranice slov a pravidla vzorů

preg_match() je vhodným nástrojem, pokud potřebujete zkontrolovat, zda řetězec obsahuje slovo s přesnými požadavky na shodu, jako jsou celá slova, pravidla nerozlišující velká a malá písmena, nepovinné znaky nebo pokročilé vzory.

if (preg_match('/example/', $string)) {
echo "Found";
}

Schopnosti:

  • Podporuje úplné regulární výrazy pro složité vyhledávání.
  • Přidejte i modifikátor pro porovnávání bez rozlišení velkých a malých písmen.
  • K zajištění přesné detekce celých slov použijte hranice.

Například, aby odpovídalo celému slovu joe, ale ne joey:

if (preg_match('/\bjoe\b/i', $string)) {
echo "Found whole word";
}

Používání stránek strstr() vrátit odpovídající podřetězec a dále

Pokud potřebujete načíst část řetězce začínající shodou, použijte příkaz strstr().

$result = strstr($string, $needle);
 
if ($result !== false) {
echo "Substring: " . $result;
}

Charakteristika:

  • Vrací podřetězec začínající prvním výskytem slova $needle.
  • Vrací false, pokud nebyl nalezen.
  • To je užitečné, pokud chcete zachytit veškerý text, který následuje za odpovídajícím segmentem.

Stručný návod pro výběr správné metody

Požadavek Nejlepší metoda
Jednoduchá kontrola v PHP 8 a novějším str_contains()
Potřeba pozice nebo dřívější podpora PHP strpos() or stripos()
Potřeba zkontrolovat, zda řetězec obsahuje slovo s hranicemi nebo regex pravidla preg_match()
Potřebujete podřetězec začínající od místa shody strstr()

Komplexní příklad s použitím všech hlavních metod

$haystack = "The quick brown fox jumps over the lazy dog";
$needle = "fox";
 
// 1. str_contains (PHP 8+)
echo str_contains($haystack, $needle)
? "Found via str_contains\n"
: "Not found\n";
 
// 2. strpos (case sensitive)
if (strpos($haystack, $needle) !== false) {
echo "Found via strpos\n";
}
 
// 3. stripos (case insensitive)
if (stripos($haystack, $needle) !== false) {
echo "Found via stripos\n";
}
 
// 4. preg_match (whole word match)
if (preg_match('/\bfox\b/i', $haystack)) {
echo "Found via preg_match (whole word)\n";
}
 
// 5. strstr to return substring from match
$substring = strstr($haystack, $needle);
if ($substring !== false) {
echo "Found via strstr. Substring is: $substring\n";
}

Závěr

  • str_contains() je nejpřehlednější a nejmodernější řešení pro kontrolu, zda řetězec obsahuje podřetězec v PHP 8 a novějším.
  • Použijte strpos() or stripos() pokud potřebujete index shody nebo kompatibilitu se staršími verzemi PHP.
  • Použijte preg_match() pro porovnávání celých slov, složitých vzorů nebo pokročilých pravidel.
  • S prázdnými jehlami a rozdíly v pouzdrech zacházejte záměrně, abyste se vyhnuli neočekávanému chování.

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google