Str contains: примеры (PHP)
str_contains(string haystack, string needle): boolФункция str_contains в PHP
Функция str_contains выполняет проверку наличия подстроки в заданной строке. Она возвращает логическое значение true, если искомая последовательность символов обнаружена, и false в противном случае. Эта функция применяется для валидации входных данных, поиска ключевых слов в тексте, маршрутизации запросов и во многих других сценариях, где требуется определить наличие фрагмента.
Функция принимает два обязательных строковых аргумента:
- $haystack (тип string) – строка, в которой осуществляется поиск.
- $needle (тип string) – подстрока, наличие которой проверяется.
Если аргумент $needle является пустой строкой (''), функция всегда возвращает true.
Примеры использования str_contains
echo str_contains('Привет, мир!', 'мир') ? 'найдено' : 'не найдено';найдено
var_dump(str_contains('Пример текста', 'текс'));bool(true)
Поиск с учетом регистра символов.
var_dump(str_contains('PHP 8', 'php'));bool(false)
var_dump(str_contains('Любая строка', ''));bool(true)
Похожие функции в PHP
Функция strpos() возвращает позицию первого вхождения подстроки. Для проверки наличия нужно сравнивать результат с false. Позволяет узнать место нахождения подстроки.
Регистронезависимый аналог strpos(). Используется, когда регистр символов не важен, но требуется позиция.
Возвращает часть строки $haystack начиная с первого вхождения $needle. Удобна для извлечения части строки после найденного фрагмента.
Функция str_contains() является наиболее простым и читаемым вариантом для проверки факта наличия подстроки, появившимся в PHP 8. Функции strpos() и stripos() предпочтительнее, когда необходима позиция вхождения.
Типичные ошибки
Попытка интерпретировать булево значение как число — распространенная ошибка.
if(str_contains('abc', 'a') == 1) { // Неверно
echo "Найдено";
}// Условие не выполнится, так как true не равно 1 при строгом сравнении
// Ошибочный вызов: подстрока и строка перепутаны местами
var_dump(str_contains('маленькая', 'большая строка'));bool(false)
Функция ожидает строки. Другие типы приводятся к строке, что может привести к неочевидным результатам.
var_dump(str_contains(12345, 23));bool(true) // Числа приведены к строкам "12345" и "23"
Изменения в версиях PHP
Функция str_contains() была добавлена в язык с релизом PHP 8.0.0. В более ранних версиях языка эта функция отсутствовала. Для обратной совместимости приходилось использовать strpos() с проверкой на тождественное неравенство false.
// Способ для версий до PHP 8.0
if (strpos('Проверяемая строка', 'искомая') !== false) {
echo 'Найдено';
}Начиная с PHP 8.0, синтаксис стал более интуитивным и безопасным, так как исключает путаницу с возвращаемыми значениями 0 и false у функции strpos().
Расширенные примеры применения
function containsAny(string $haystack, array $needles): bool {
foreach ($needles as $needle) {
if (str_contains($haystack, $needle)) {
return true;
}
}
return false;
}
$text = "Это пример текста на PHP";
$keywords = ["Python", "пример", "Java"];
var_dump(containsAny($text, $keywords));bool(true)
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (str_contains($userAgent, 'Firefox')) {
echo 'Вы используете браузер Firefox';
} elseif (str_contains($userAgent, 'Chrome')) {
echo 'Вы используете браузер Chrome';
}$filename = 'document.pdf';
$allowed = ['.pdf', '.doc', '.txt'];
$isValid = false;
foreach ($allowed as $ext) {
if (str_contains($filename, $ext)) {
$isValid = true;
break;
}
}
echo $isValid ? 'Разрешено' : 'Запрещено';Разрешено
$requestUri = '/catalog/category/product';
$routes = [
'admin' => 'Админ-панель',
'catalog' => 'Каталог товаров',
'blog' => 'Блог'
];
foreach ($routes as $key => $handler) {
if (str_contains($requestUri, $key)) {
echo "Запуск: $handler";
break;
}
}Запуск: Каталог товаров
Аналоги в других языках
Str contains в Python
Используется оператор in или метод str.find().
text = "Пример текста"
result = "текст" in text
print(result) # TrueTrue
Str contains в Javascript
Методы String.prototype.includes() (ES6) или String.prototype.indexOf().
let text = "Пример текста";
let result = text.includes("текст");
console.log(result); // truetrue
Str contains в MySQL
Оператор LIKE или функция INSTR().
SELECT 'Пример текста' LIKE '%текст%'; -- Возвращает 1 (TRUE)1
Основное отличие PHP-функции — ее специализация только на проверке наличия, в то время как аналоги в других языках часто возвращают позицию или требуют использования операторов.