我想在$ 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.";
}
答案 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.";
}
}