PHP正则表达式在字符串中查找多个单词

时间:2012-10-05 20:58:53

标签: php regex preg-match

情况的性质,我需要1个模式来执行以下操作:

创建应该找到的模式

  1. 单个单词的完全匹配
  2. 两个单词组合的完全匹配。
  3. 可以在字符串中找到的2个单词的匹配项。
  4. 我的问题是#3。目前我有:

    $pattern = '/\s*(foo|bar|blah|some+text|more+texted)\s*/';
    

    我如何附加到这个模式中,它会在字符串的任何组合中找到“坏文本”。

    有什么想法吗?

2 个答案:

答案 0 :(得分:1)

要检查字符串错误,请使用正则表达式

  /\bbad\b/

要检查字符串错误文字,请使用正则表达式

  /\bbad text\b/

要检查字符串中错误文字的任何组合,请使用正则表达式

  /\b(bad|text)\s+(?!\1)(?:bad|text)\b/

要检查字符串中是否存在单词错误文本,请使用正则表达式

  /(?=.*\bbad\b)(?=.*\btext\b)/

答案 1 :(得分:0)

有几种方法可以做到这一点,但这里很容易

$array_needles = array("needle1", "needle2", etc...); 
$array_found_needles = array(); 

$haystack = "haystack";

foreach ($array as $key=>$val) {
    if(stristr($haystack, $val) {
    //do whatever you want if its found
    $array_found_needles[] = $val; //save the value found
    }
} 

$found = count($array_found_needles);

if ($found == 0) {
    //do something with no needles found
} else if($found == 1) {
    //do something with 1 needle found 
} else if($found == 2) {
    //do something with two needles found, etc
}