我有字符串:
$s = 'Артгалерея Живопись Африка и от the Albert$Lizah, L-77, Christ UF1.1 (Christ).';
我希望在数组中接收下一个字符串:
$s = 'Артгалерея Живопись Африка Albert Lizah Christ';
我使用了正则表达式:
preg_match_all('#\pL{4,}+#iu', $s, $m);
$m = preg_replace("/\b(\w+)\s+\\1\b/i", "$1", implode(' ',$m[0]));
$m = explode(' ', $m);
echo '<pre>'.print_r($m, 1).'</pre>';
并收到:
$s = 'Артгалерея Живопись Африка Albert Lizah Christ Christ';
但是我不能在没有重复单词的情况下收到字符串。
问题:如何更改正则表达式php - '#\ pL {4,} + #iu',以排除包含在重复字词串中?
非常感谢!
答案 0 :(得分:2)
使用带有反向引用的负向前瞻断言:
\b(\pL{4,}+)\b(?!.*\b\1\b)
答案 1 :(得分:1)
在preg_match_all的结果上使用array_unique
:
...
$words = array_unique($m[0]);
...