Как проверить, содержит ли строка конкретное слово?
Описание проблемы
У меня есть следующий код на PHP:
$a = 'How are you?';
if ($a contains 'are')
echo 'true';
Я пытаюсь проверить, содержит ли строка $a
подстроку 'are'
. Однако выражение if ($a contains 'are')
не является корректным синтаксисом.
Как правильно написать это условие для проверки наличия подстроки в строке $a
?
3 ответ(ов)
Если вы хотите избежать проблем с "ложными" и "истинными" значениями, вы можете использовать функцию substr_count
:
if (substr_count($a, 'are') > 0) {
echo "по крайней мере одно вхождение 'are' присутствует!";
}
Хотя substr_count
немного медленнее, чем strpos
, она позволяет избежать проблем с неявным сравнением.
Ваш код на PHP использует функцию preg_match()
, чтобы проверить, содержится ли подстрока "are" в переменной $a
. Если да, то выводится строка 'true'.
Если вам нужно перевести этот код на русский с пояснением, вот пример:
if (preg_match('/(are)/', $a)) {
echo 'true'; // Если в переменной $a есть подстрока "are", выведется 'true'
}
Таким образом, данный фрагмент кода проверяет наличие слова "are" в строке, содержащейся в переменной $a
. Если слово найдено, будет выведено 'true'.
Вы можете использовать функцию strstr
для поиска подстроки в строке:
$haystack = "I know programming";
$needle = "know";
$flag = strstr($haystack, $needle);
if ($flag) {
echo "true";
}
Без использования встроенной функции:
Если вы хотите реализовать этот функционал без использования встроенных функций, вы можете воспользоваться следующим подходом:
$haystack = "hello world";
$needle = "llo";
$i = $j = 0;
while (isset($needle[$i])) {
while (isset($haystack[$j]) && ($needle[$i] != $haystack[$j])) {
$j++;
$i = 0;
}
if (!isset($haystack[$j])) {
break;
}
$i++;
$j++;
}
if (!isset($needle[$i])) {
echo "YES";
} else {
echo "NO";
}
В этом коде мы используем два цикла while
для прохождения по строкам. Внешний цикл проверяет текущий символ подстроки $needle
, а внутренний цикл ищет совпадение в строке $haystack
. Если успели пройти по всей подстроке и не встретили конца строки $haystack
, выводим "YES", иначе — "NO".
Как проверить, содержит ли строка подстроку в JavaScript?
Есть ли в Python метод подстроки 'contains' для строк?
Как проверить, содержит ли строка подстроку?
Функции startsWith() и endsWith() в PHP
Удалить пустые элементы массива