php + vim - बंगलौर (Бангалор) имеет перерыв перед последним персонажем र - PullRequest
1 голос
/ 30 августа 2010

Я использовал http://translate.google.com/#en|hi|Bangalore, чтобы получить хинди для Бангалора и बंगलौर.

Но когда я вставил его в vim, перед последним символом появляется перерыв र.
Я использую preg_replaceс шаблоном регулярных выражений / [^ \ p {L} \ p {Nd} \ p {Mn} _] / u для соответствующих слов.Но это трактует последний символ как отдельное слово.

Это моя входная строка मैनेजमेंट, बंगलौर, и я ожидаю, что результат будет be बंगलौर после preg_replace

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

Новыходной я получаю это is बंगल र.Что я здесь не так делаю?Думаю, проблема в том, как vim обработал вставленный мной текст.

1 Ответ

2 голосов
/ 30 августа 2010

Попробуйте это регулярное выражение "/[^\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"

С регулярные выражения.info / unicode

\p{M} или \p{Mark}: символ, предназначенный для объединения с другим символом (например, акценты, умлауты, заключенные в квадраты и т.символ, не занимающий лишнего пробела (например, акценты, умлауты и т.языки).

\p{Me} или \p{Enclosing_Mark}: символ, содержащий символ, объединяется с (круг, квадрат, колпачок и т. д.).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...