我有一个正则表达式模式,用于搜索文本文件中的单词。我如何忽略重复?
例如,看看这段代码
$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] );
如果我在文章中有多个说 lorem ,输出将是这样的
5 matches found!
Matched words: daboom,lorem,lorem,lorem,lorem
我希望模式只能找到第一个匹配项,而忽略其余的,所以输出应该是:
2 matches found!
Matched words: daboom,lorem
答案 0 :(得分:6)
在$matches[0]
上执行array_unique
。如果您希望唯一字符不区分大小写,则可能是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 );