- 更新 - 好吧,我已经将其缩小到要检查的关键字,如果它们被硬编码到数组中,关键字将只与它们之间的空格匹配。如果带有空格的关键字放在数组中,则是数据库的结果,那么preg_match_all将失败并找到0结果。
所以如果我在php中硬编码数组
$myarray = array("This is my Phrase","This is my Second Phrase");
然后根据texttoscan检查它,preg_match_all将找到两个阶段,但是 如果我这样做来创建数组:
$result1 = mysql_result($result,$i,"firstphrase");
$result2 = mysql_result($result,$i,"secondphrase");
$myarray = array($result1,$result2);
下面的preg_match_all将失败并且找不到短语,但如果我使用单个单词而不是短语填充数组,它将起作用。所以我假设我必须准备包含从数据库返回的空格的字符串,但我不确定如何执行它,或者我需要重新格式化正则表达式模式?
foreach ($myarray as $K) {
$pattern = "/\b($K)\b/";
$count = preg_match_all($pattern, $texttoscan, $matches);
if($count > 0){ echo "matched"; }
}
答案 0 :(得分:0)
数据库文本是否可能包含换行符,其中硬编码文本没有?如果是这样,您可能希望使用m
修饰符来允许多行匹配。这将成为正则表达式:
$pattern = "/\b($K)\b/m";
希望有所帮助。此外,除非您尝试专门匹配UTF单词/字符,否则您应该没有任何问题。