我有一个文本字段,用户将在其中输入逗号分隔的关键字或关键短语,然后服务器将使用这些值来检查多个文本主体是否匹配。
所以基本上我需要的是匹配一个精确的短语,不区分大小写,在正文中可能有空格。
通过生成以下正则表达式,我可以轻松匹配关键字:
示例关键字:peanut, butter, jelly
生成正则表达式:/peanut|butter|jelly/i
但是有空格是行不通的。即使我将给定值中的空格替换为\s
示例:peanut butter, jelly sandwich, delicious
正则表达式:/peanut\sbutter|jelly\ssandwich|delicious/i
什么是正确匹配短语的正确正则表达式?不区分大小写并使用 PHP 的 preg_match
?
谢谢。
编辑
这就是我正在做的事情:
$keywordsArray = array_map( 'trim', explode( ',', $keywords ) );
$keywordsArrayEscaped = array_map( 'preg_quote', $keywordsArray );
$keywordsRegex = '/' . implode( '|', $keywordsArrayEscaped ) . '/i';
以上生成如上所述的表达式(没有将空格替换为\s
,因为它不起作用。)
接下来我简单地做preg_match( $keywordsRegex, $text );