警告:preg_match_all():未知修饰符';J';使用php

警告:preg_match_all():未知修饰符';J';使用php,php,regex,Php,Regex,我在php中使用正则表达式,它工作得很好。但是,得到一些警告,比如 Warning: preg_match_all(): Unknown modifier 'J' 我的代码是 $pattern = '/\b'.trim($keyword[$i]).'(s)??\b/i'; if(preg_match_all($pattern, substr($content,10), $matches)){ print_r

我在php中使用正则表达式,它工作得很好。但是,得到一些警告,比如

Warning: preg_match_all(): Unknown modifier 'J'
我的代码是

$pattern = '/\b'.trim($keyword[$i]).'(s)??\b/i';
                    if(preg_match_all($pattern, substr($content,10), $matches)){
                        print_r($matches[0]);
                    }
print\r($keywords[$i])
的结果是

Array
(
    [0] => best
    [1] =>  menu
    [2] =>  resturant
    [3] =>  resturants
    [4] =>  Food
    [5] =>  Dinner
    [6] =>  Lunch
)
供你参考

请帮帮我。提前谢谢

在正则表达式中插入这样的单词时,最好使用:

$pattern = '/\b'.preg_quote(trim($keyword[$i]), '/').'(s)??\b/i';

在$keyword[$i]中给出一个print_r(),我编辑了这个问题。请立即检查
print\r($keywords[$i])
与您提供的输出不符,除非
$keywords
是二维数组。为了看到更大的图景,请您将
$keywords
复制到类似
$keywords=array(“aaa”、“bbb”、“ccc”)并告诉我们您最终要实现的目标。根据用例的不同,
preg\u grep()
可以帮助您。在为
preg\u quote
使用模式+1后,仍然会收到相同的警告。。。但是-1表示双重逃避一切。在单引号字符串中工作的唯一转义序列是\\和\'。其他任何东西都不受影响;特别是,您不需要对所有内容都使用双反斜杠——这就是使用单引号字符串表示REs@Gireesh的部分意义。我对我的答案做了一个小编辑,请检查。我支持+1/-1。两个反斜杠,他们什么也没做!酷,删除-1,现在只保留+1。;)