我有一串文本和一系列单词:
String: Auch ein blindes Huhn findet einmal ein Korn.
Words: auch, ein, sehendes
我想检查字符串中包含哪个单词。我正在使用preg_match_all
:
$pattern = "/\bauch\b|\bein\b|\bsehendes\b/i";
$subject = "Auch ein blindes Huhn findet einmal ein Korn.";
preg_match_all($pattern, $subject, $matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => Auch
[1] => ein
[2] => ein
)
)
这是按预期的,但是由于我必须经常编辑模式,并且在单词被单词边界锚(\b
)包围时,我发现它们令人困惑,我想定义单词列表没有单词边界锚定并在第二步中添加它们。类似:
$pattern = "auch|ein|sehendes";
$pattern = "/\b" . $pattern . "\b/i";
当然,这是无法预期的。我可以用单词和循环填充一个数组以构建图案,但我想避免循环。有什么想法如何做到这一点?
真正的字符串和真实的单词数量很大。
最终我需要匹配的数量,因为它由preg_match_all
返回。对于示例,预期的输出为“ 3”。
the是一个类似的问题,在JavaScript中完成此操作:
您可能会使用关键字的Alternation,例如
$pattern = "/\b(?:auch|ein|sehendes)\b/i";
$subject = "Auch ein blindes Huhn findet einmal ein Korn.";
preg_match_all($pattern, $subject, $matches);
print_r($matches);
Array
(
[0] => Array
(
[0] => Auch
[1] => ein
[2] => ein
)
)