2

我有字符串:

$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',以排除包含在重复单词字符串中?

非常感谢!

4

2 回答 2

2

使用带有反向引用的否定前瞻断言:

    \b(\pL{4,}+)\b(?!.*\b\1\b)
于 2012-07-05T18:08:10.167 回答
1

array_unique在 preg_match_all 的结果上使用:

...
$words = array_unique($m[0]);
...
于 2012-07-05T16:21:30.523 回答