0

私は文字列を持っています:

$str = " Côte-d'azure ! (3000) limousin - limousine  ";

そして、いくつかの単語を抽出して配列に入れる必要があります。最終的に取得するには:

array (
        0 => "Côte-d'azure",
        1 => "limousin",
        2 => "limousine"
     );

だから私は試しました:

preg_match_all("/[a-zA-Z]+/", $str, $all);

ただし、これは特殊文字ô' 、および-を無視します

アドバイスをお願いします。

4

2 に答える 2

1

Unicode モードu文字プロパティを使用します。

preg_match_all('/\p{L}[\p{L}\\\\\'-]+/u', mysql_real_escape_string($str), $all);

これには 1 つの (Unicode) 文字が必要であり、他の Unicode 文字、バックスラッシュ、ハイフン、およびアポストロフィを可能な限り一致させます。他の句読点文字で単語を区切らないようにする場合は、それを文字クラスに含めます。

5 つのバックスラッシュに注意してください。3 つのバックスラッシュは、文字列がコンパイルされるときに削除されます。これは、そのうちの 2 つがそれに続くバックスラッシュをエスケープし、最後の 1 つが . をエスケープするため'です。したがって、正規表現エンジンは 2 つのバックスラッシュのみを受け取ります。これらは、正規表現エンジンによって 1 つのリテラル バックスラッシュとして解釈されます。残念ながら、PHP を使用する場合、1 つのリテラル バックスラッシュを表すために 4 つ未満のバックスラッシュを使用する方法はありません。

于 2012-12-02T09:02:07.473 に答える
0

試す

if (preg_match('/[^a-zA-Z0-9]+/', $your_string, $matches))
{
  echo '  symbol encountered !!';
}
于 2012-12-02T08:33:43.110 に答える