查找字符串中是否存在子字符串

bah*_*100 5 php regex string substr

我有很多字符串,我需要检查它们是否包含颜色.

例如 :

  • 一只鸟在天空中
  • 法国22街
  • 狗是蓝色的
  • 猫是黑色和白色

因此,最后两个字符串必须返回true.

找到它的最佳方法是什么?

正则表达式,或检查任何substr()?

Qua*_*unk 24

我一直在努力,strpos因为它似乎是最快的选择(虽然不知道正则表达式).

if(strpos($haystack, $needle) !== FALSE) return $haystack;
Run Code Online (Sandbox Code Playgroud)

  • strpos不返回TRUE,但它确实返回FALSE所以你可以做`if(strpos($ haystack,$ needle)!== FALSE)返回$ haystack;`还有另一件要记住的事情是你是否正在寻找`red`那么`fred`也会返回一个结果. (3认同)
  • 这比正则表达式更快.还要注意,如果[`strpos`](https://secure.php.net/manual/en/function.strpos.php)区分大小写.如果你需要搜索子字符串而不管你应该使用[`stripos`](http://php.net/manual/en/function.stripos.php) (2认同)

Rob*_*lin 8

在regexp中你可以写

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

print_r($matches);
Run Code Online (Sandbox Code Playgroud)

对所有字符串使用循环,您将很容易注意到您需要的$匹配值.