Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个单词的preg_匹配_Php - Fatal编程技术网

Php 多个单词的preg_匹配

Php 多个单词的preg_匹配,php,Php,我想测试一个字符串,看看它是否包含某些单词 i、 e: 但这种方法只匹配一个单词。如何检查多个单词?类似于: preg_match('\brain\b',$string, $matches); var_dump($matches); preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 可以将管道字符(|)用作正则表达式中的“或” 如果你只需要知道这些单词中是否有任何一个出现,请使用上面的方法。如果需要匹配任何单词的所有出现

我想测试一个字符串,看看它是否包含某些单词

i、 e:

但这种方法只匹配一个单词。如何检查多个单词?

类似于:

preg_match('\brain\b',$string, $matches);
var_dump($matches);
preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches);
可以将管道字符(
|
)用作正则表达式中的“或”

如果你只需要知道这些单词中是否有任何一个出现,请使用上面的方法。如果需要匹配任何单词的所有出现,请使用:

然后检查
$matches
变量。


“如果只想检查一个字符串是否包含在另一个字符串中,请不要使用preg_match()。请改用strps()或strstr(),因为它们会更快。”

缺少分隔符,并且不会返回多个分隔符value@Autolycus我打算在单词周围加一个空格
\s
,但是我注意到您已经使用了单词边界
\b
@Autolycus开头和结尾处的
#
标记正则表达式的开头和结尾,并且是必需的(该字符或任何其他字符),以便您可以在结尾处添加开关,如
#I
用于不区分大小写的匹配。我不同意这个答案,因为
rain,干燥、透明。
将匹配nothing@NicolasThery它会匹配所有三个,你试过吗?同意,我不知道为什么我的第一个测试不匹配coma作为单词边界。。。我已经投了你的票(顺便说一句;)那个“我”对忽略这个案子很有帮助!
preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches);
preg_match('~\b(rain|dry|certain|clear)\b~i',$string);
preg_match_all('~\b(rain|dry|certain|clear)\b~i', $string, $matches);