如何在一个字符串中搜索两个字符串?
嗨我必须在一个字符串中搜索两个字符串。 例如如何在一个字符串中搜索两个字符串?
$string = "The quick brown fox jumped over a lazy cat";
if($string contains both brown and lazy){
then execute my code
}
我试图pregmatch这样,
if(preg_match("/(brown|lazy)/i", $string)){
execute my code
}
但是它进入如果如果它们中的一个存在于串中循环。但是我希望它只在两个字符串出现在父字符串中时才输入if条件。我怎样才能做到这一点。
注意:我不想在字符串上循环。 (就像使用strpos
explode
字符串和foreach
分解的阵列上和搜索)
尝试像
if(preg_match("/(brown)/i", $string) && preg_match("/(lazy)/i", $string)){
execute my code
}
勇也可以尝试用strpos
像
if(strpos($string, 'brown') >= 0 && strpos($string, 'lazy') >= 0){
execute my code
}
您的strpos示例都是错误的:如果位置为0(字符串的开头),它将永远不会返回TRUE,并且'> 0'将失败。 – Shomz 2014-10-30 05:25:39
对不起,回滚。它会''0' – Gautam3164 2014-10-30 05:25:41
@Shomz是的我也来了解这一点。感谢 – Gautam3164 2014-10-30 05:26:19
迟到的回答,如果你希望测试两个词的完全匹配:
$regex= "/\b(brown)\b[^.]*\b(lazy)\b/i";
$string = "The quick brown fox jumped over a lazy cat";
if(preg_match($regex, $string))
{
echo 'True';
} else {
echo 'False';
}
- 或者,用
$regex = "/(brown)[^.]*(lazy)/i";
取代它,如果你不想要测试精确匹配,这是一个更短的方法。
谢谢@Fred -ii-为您的关注:) – 2014-10-30 05:59:22
@BlankHead不客气。我当时正在测试,并在此过程中离开此页面,这解释了我迟到的答案。如果这是你的+1,谢谢:) – 2014-10-30 06:01:07
嘿。请不要提及。 :) – 2014-10-30 06:39:53
'$ string contains the brown and lazy'这里的关键字是:'和'。 – Shomz 2014-10-30 05:21:47
'$ regex =“/(brown)[^。] *(懒惰)/ i”;'要短得多。 – 2014-10-30 05:24:41
如果你正在寻找一种方法来处理正则表达式,这篇文章解释了如何用正则表达式获得'和'效果:http://*.com/questions/469913/regular-expressions-is-there -an-and-operator – Tim 2014-10-30 05:24:44