php + vim - बंगलौर (Бангалор) имеет разрыв перед последним символом र

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

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

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

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

Но на выходе я получаю मैनेजमेंट बंगल र . Что я здесь делаю неправильно? Я предполагаю, что проблема начинается с того, как vim обрабатывал текст, который я вставил.


person Jithin    schedule 30.08.2010    source источник


Ответы (1)


Попробуйте это регулярное выражение "/[^\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}: символ, который окружает символ, сочетается с (круг, квадрат, колпачок и т. д.).
person Amarghosh    schedule 30.08.2010
comment
Спасибо. Я пытался сопоставить все слова во входной строке в UTF-8, на каком бы языке они ни находились. Регулярное выражение /[^\p{L}\p{Nd}\p{Mn}\p{Mc}_] / ты помог - person Jithin; 30.08.2010
comment
Я также заметил кое-что в vim. vim, кажется, имеет некоторые проблемы с определением правильного конца слова для बंगलौर - person Jithin; 30.08.2010
comment
@Jithin, можете ли вы уточнить это - может быть, как новый вопрос, если это необходимо? - person Amarghosh; 30.08.2010
comment
В vim, если я нажму w, если я должен в идеале перейти к началу следующего слова. Но для बंगलौर w с самого начала переходит в र . - person Jithin; 30.08.2010
comment
@Jithin А как насчет других слов на хинди - это только для бангалора или слов, оканчивающихся на r, или для всех индийских слов? - person Amarghosh; 30.08.2010