php + vim -बंगलौ因(バンガロール)が最後のキャラクターの前に休憩があります

StackOverflow https://stackoverflow.com/questions/3598212

質問

使った http://translate.google.com/#en|hi| Bangalore バンガロールのヒンディー語を手に入れるため。

しかし、Vimに貼り付けたとき、最後のキャラクターの前に休憩があります。
Regexパターンでpreg_replaceを使用しています /[^ p {l} p {nd} p {mn} _]/u 一致する単語の場合。しかし、これは最後のキャラクターを別の単語として扱っています。

これは私の入力文字列मैनेजमेंट、बंगलौです、そして私は出力がpreg_replaceの後にमैनेजमेंटमैनेजमेंटです。

$cleanedString = preg_replace('/[^\p{L}\p{Nd}\p{Mn}_]/u', ' ', $name);

しかし、私が取得している出力はमैनेजमेंटबंगलです。ここで何が間違っているのですか?問題は、VIMが私が貼り付けたテキストをどのように処理したかから始まると思います。

役に立ちましたか?

解決

この正規表現を試してください "/[^\p{L}\p{Nd}\p{Mn}\p{Mc}_]/u"

O シンボル लौ とは対照的に、余分な水平スペースを取ります aeमै. 。 Unicodeクラス \p{Mn} 非間隔マークのみに一致します。使用する \p{Mc} 間隔のマークに一致させる。使用できます \p{M} すべての組み合わせマークを一致させるには: "/[^\p{L}\p{Nd}\p{M}_]/u"

から regular-Expressions.info/unicode

\p{M} また \p{Mark}: :別のキャラクターと組み合わせることを目的としたキャラクター(例:アクセント、ウムラウト、ボックスの囲いなど)。

  • \p{Mn} また \p{Non_Spacing_Mark}: :余分なスペース(アクセント、ウムラウトなど)を使用せずに別のキャラクターと組み合わせることを目的としたキャラクター。
  • \p{Mc} また \p{Spacing_Combining_Mark}: :余分なスペースを占める別のキャラクター(多くの東部言語の母音の標識)と組み合わせることを目的としたキャラクター。
  • \p{Me} また \p{Enclosing_Mark}: :キャラクターを囲むキャラクターは、(円、正方形、キーキャップなど)と組み合わされます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top