使用preg_match比较两个字符串

时间:2014-09-08 17:28:39

标签: php preg-match

我想在$ string中搜索$ array的内容,但是在使用implode函数时遇到问题会返回以下内容:

  

preg_match():分隔符不能是字母数字或反斜杠

因此,在下面的示例中,$ string将搜索“Empire”或“Jedi”。

这几乎肯定与逃避有关,但我无法理解它。

非常感谢

$string = 'The Empire Strikes back';
$array = array (
        0 => 'Empire',
        1 => 'Jedi'
);

if (preg_match( implode(" ", $array), $string )) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}

4 个答案:

答案 0 :(得分:1)

正确:implode(“|”,$ array)

原因| = OR

答案 1 :(得分:1)

正则表达式必须delimiters。你想要的是/Empire|Jedi/i(读:“搜索帝国或绝地,不区分大小写”)。

因此,您必须按如下方式使用它:

...
preg_match('/' . implode("|", $array) . '/', $string)
...

答案 2 :(得分:1)

$string = 'The Empire Strikes back';
$array = array (
        0 => 'Empire',
        1 => 'Jedi'
);

$re = join ('|', array_map('preg_quote', $array));
var_dump (preg_match ("/$re/", $string));

答案 3 :(得分:0)

你可以使用它:

 $Words = array('Empire', 'Jedi');
 $strings = 'The Empire Strikes back';
 foreach ($Words as $Word) {
 if (preg_match("/\b$Word\b/", $strings)) {
     echo "A match was found.";
   }
  else{
    echo "A match was not found.";
   }
  }