忽略正则表达式模式中的重复项

Hyd*_*erA 3 php regex

我有一个正则表达式模式,用于搜索文本文件中的单词.我如何忽略重复?

例如,看看这段代码

$pattern = '/(lorem|ipsum|daboom|pahwal|ababaga)/i';
$num_found = preg_match_all( $pattern, $string, $matches );

echo "$num_found match(es) found!";
echo "Matched words: " . implode( ',', $matches[0] );
Run Code Online (Sandbox Code Playgroud)

如果我在文章中有不止一个说lorem,输出将是这样的

5 matches found!
Matched words: daboom,lorem,lorem,lorem,lorem
Run Code Online (Sandbox Code Playgroud)

我希望模式只找到第一个出现,并忽略其余的,所以输出应该是:

2 matches found!
Matched words: daboom,lorem
Run Code Online (Sandbox Code Playgroud)

Ali*_*aru 6

做一个array_unique$matches[0].如果您希望独特的不区分大小写,也许可以array_map使用strtolower.

$pattern = '/(lorem|ipsum|daboom|pahwal|ababaga)/i';
preg_match_all( $pattern, $string, $matches );
$matches = $matches[0]?array_unique(array_map('strtolower', $matches[0])):array();

echo count($matches)." match(es) found!";
echo "Matched words: " . implode( ',', $matches );
Run Code Online (Sandbox Code Playgroud)