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_uniquepreg_match_allの結果に使用します。

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