Úvod >PHP >PHP manuál - funkce >str_contains

str_contains

str_contains($text, $hledany)

Zjistí, jestli text obsahuje hledaný řetězec, a vrátí true nebo false. Rozlišuje velká a malá písmena. Funkce je od PHP 8.0.

Parametry

  • $text – prohledávaný text.
  • $hledany – hledaný řetězec.

Příklady

var_dump(str_contains("Objednávka č. 2026-15", "2026")); // bool(true)
var_dump(str_contains("Objednávka", "objednávka")); // bool(false)
// bez ohledu na velikost písmen
var_dump(str_contains(mb_strtolower("Objednávka"), "objednávka")); // bool(true)
// prázdný řetězec je obsažený vždy
var_dump(str_contains("abc", "")); // bool(true)
// dřívější zápis přes strpos – nalezení na pozici 0 je potřeba odlišit od false
var_dump(strpos("PHP 8", "PHP") !== false); // bool(true)

Náhrada pro starší PHP

Ve verzích starších než PHP 8.0 funkce není. Následující kód ji doplní jen tam, kde chybí, v novějších verzích se použije vestavěná funkce.

if (!function_exists("str_contains")) {
    function str_contains($text, $hledany) {
        return $hledany === "" || strpos($text, $hledany) !== false;
    }
}
var_dump(str_contains("Objednávka č. 2026-15", "2026")); // bool(true)
var_dump(str_contains("abc", "")); // bool(true)

Na co si dát pozor

  • Rozlišuje velká a malá písmena. Bez rozlišení použijte stripos() !== false, u textu s diakritikou převeďte oba řetězce přes mb_strtolower().
  • Prázdný hledaný řetězec vrátí vždy true. Když hledaný text zadává uživatel, prázdnou hodnotu ošetřete zvlášť.
  • Porovnává bajty. S texty v UTF-8 to funguje správně, falešnou shodu uprostřed znaku nenajde.

Příbuzné funkce:
str_starts_with()
str_ends_with()
strpos()
mb_strpos()