9

文字列からアルファベット以外の文字をすべて削除したい。UTF8文字列なので文字範囲がわからないのが難点です。

それは、ENGLISH, ووگچ, ქართული, УКРАЇНСЬКИЙ, РУССКИЙ のいずれかです。

私は通常、次のようなことをします:

$str = preg_replace('/[^a-zA-Z]/', '', $str);

また

$str = preg_replace('/[^\w]/u', '', $str);

しかし、どちらも外国のキャラクターをクリアしています。

何か案は?

4

3 に答える 3

11

Unicode文字プロパティを使用します:

$str = preg_replace('/\P{L}+/u', '', $str);
于 2012-08-16T14:42:20.127 に答える
8

更新: Unicode に関しては、RegExp は次のようになります[^\p{L}\s]+(スペースを置き換えずに)

すべての英字以外の文字を UTF8 サポートに置き換えます。

  • \P{L}+- 文字以外の記号に一致
  • \p{P}+- 句読点のみを削除します

役立つリファレンス ドキュメントを次に示します。

于 2012-08-16T14:37:38.677 に答える
1

文字の Unicode プロパティは\pL、非文字の Unicode プロパティは\PL

$str = preg_replace('/\PL+/u', '', $str);
于 2012-08-16T14:43:00.557 に答える