Мы считаем, что переменная $foo
содержит строку со значением hello world . Мой вопрос: как можно проверить, $foo
содержит ли он слово world и бросить echo
?
$foo = 'Hola mundo';
if($foo contiene 'mundo') {
echo 'True';
}
Мы считаем, что переменная $foo
содержит строку со значением hello world . Мой вопрос: как можно проверить, $foo
содержит ли он слово world и бросить echo
?
$foo = 'Hola mundo';
if($foo contiene 'mundo') {
echo 'True';
}
Сделать это можно с помощью функции
strpos
, которая позволяет найти позицию первого вхождения подстроки в строку, то есть позицию первого вхождения строки в другую строку.Если позиция не найдена, она вернется
false
.Ответ Error404 является лучшим (используйте
strpos
илиstripos
)strstr
, в качестве альтернативы я собираюсь предложить использовать регулярные выражения иpreg_match
что это может быть полезно в других случаях (например, если вам нужно искать какой-то шаблон больше, чем конкретная строка) и что, хотя это будет работать в вашем конкретном случае, не рекомендуется, потому что это будет медленнее.Таким образом, вы можете сделать что-то вроде:
Другим вариантом может быть использование функции strstr(строка строки,поиск строки) находит первое вхождение строки в другой строке . Если она находит искомое значение, это будет возвращенное значение, в противном случае будет возвращена пустая строка. Ко всему этому применяется функция strlen(String string) для получения длины строки (если она больше 0 найдена)
Вышеупомянутая функция чувствительна к регистру, если вы хотите, чтобы это не имело значения, используйте функцию stristr(String string,String search)
Функции
stripos
и используются дляstrpos
поиска подстрок . Например, они найдут слово внутри .strstr
"la"
"hola mundo"
Если вы ищете слова , вы должны проверить, что до и после слова нет буквенно-цифровых символов. Используя регулярные выражения, утверждение
\b
соответствует этим позициям.Демо: http://ideone.com/W8OJG5
Просто имейте в виду, что
$palabra
в нем не должно быть ни одного из следующих метасимволов регулярных выражений, и это может привести к сбою, если это произойдет.Это безопасная версия:
И, чтобы знать, в какой позиции находится слово:
Демо: http://ideone.com/7Jh4nX
Обновление 2022 и PHP 8.
Другой альтернативой является использование str_contains() (PHP 8.0+). См . спецификацию .
Вы можете работать напрямую с multibyte , поэтому версия не нужна .
mb_*
Он чувствителен к регистру , поэтому при необходимости выполните предыдущие преобразования.