Найти, если подстрока существует в строке - PullRequest
5 голосов
/ 04 августа 2011

У меня много строк, и мне нужно проверить, содержит ли каждая из них цвет.

Например:

  • Птица в небе
  • 22 улица Франции
  • Собака голубая
  • Кошка черно-белая

Итак, две последние строки должны возвращать true.

Как лучше всего его найти?

Regex, или проверить с помощью любого substr ()?

Ответы [ 4 ]

24 голосов
/ 04 августа 2011

Я всегда работаю с strpos, так как это, кажется, самая быстрая альтернатива (хотя и не знаю о регулярных выражениях).

if(strpos($haystack, $needle) !== FALSE) return $haystack;
8 голосов
/ 04 августа 2011

В регулярном выражении вы можете написать

preg_match_all("/(red|blue|black|white|etc)/", $haystack, $matches);

print_r($matches);

Используйте цикл для всех строк, и вы легко заметите, какое из значений из $ соответствует нужному.

3 голосов
/ 17 июля 2013

если вы будете использовать strpos, то он вернет позицию строки, вернет число 1,2,3 и т. Д., Не истина или ложь.

И другая проблема в том, что если строка существует в начале, она вернет 0, что будет считаться ложным, тогда strpos не сможет найти это слово.

1 голос
/ 04 августа 2011

strpos или strripos в php должны иметь возможность искать одно слово в строке.Возможно, вам придется выполнить цикл для поиска всех цветов, если вы используете его, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...