PHP + VIM - बंगलौ (Bangalore) لديه استراحة قبل الحرف الأخير र
سؤال
إستعملت http://translate.google.com/#enouthi|bangalore للحصول على الهندية لبنغالور و बंगलौ.
ولكن عندما لصقها في Vim ، هناك استراحة قبل الشخصية الأخيرة र.
أنا أستخدم preg_replace مع نمط regex /[^ p {l} p {nd} p {mn} _]/u لمطابقة الكلمات. ولكن هذا يعامل الحرف الأخير ككلمة منفصلة.
هذه هي سلسلة الإدخال الخاصة بي मैनेजमेंट ، बंगलौ وأتوقع أن يكون الإخراج मैनेजमेंट बंगलौ بعد preg_replace
$cleanedString = preg_replace('/[^\p{L}\p{Nd}\p{Mn}_]/u', ' ', $name);
لكن الإخراج الذي أحصل عليه هو मैनेजमेंट बंगल र. ماذا أفعل خطأ هنا؟ أعتقد أن المشكلة تبدأ من كيفية تعامل Vim مع النص الذي لصقه.
المحلول
جرب هذا regex "/[^\p{L}\p{Nd}\p{Mn}\p{Mc}_]/u"
ال O
رمز في लौ
يأخذ مساحة أفقية إضافية بدلاً من ae
في मै
. فئة يونيكود \p{Mn}
يطابق علامات عدم التباعد فقط. يستخدم \p{Mc}
لمطابقة علامات التباعد. يمكنك استخدام \p{M}
لمطابقة جميع علامات الجمع: "/[^\p{L}\p{Nd}\p{M}_]/u"
من التعبير العادي. info/unicode
\p{M}
أو\p{Mark}
: شخصية تهدف إلى دمجها مع حرف آخر (على سبيل المثال ، لهجات ، أملوت ، مربعات مرفقة ، إلخ).
\p{Mn}
أو\p{Non_Spacing_Mark}
: شخصية تهدف إلى دمجها مع شخصية أخرى دون تناول مساحة إضافية (على سبيل المثال ، لهجات ، أملوت ، إلخ).\p{Mc}
أو\p{Spacing_Combining_Mark}
: شخصية تهدف إلى دمجها مع شخصية أخرى تشغل مساحة إضافية (علامات حرف العلة في العديد من اللغات الشرقية).\p{Me}
أو\p{Enclosing_Mark}
: يتم الجمع بين الحرف الذي يحيط بالحرف مع (الدائرة ، مربع ، Keycap ، إلخ).