php + vim - ?????? (Bangalore) ha una pausa prima che l'ultimo carattere ?
Domanda
http://translate.google.com/#en|hi|Bangalore per ottenere il Hindi per Bangalore e ??????.
Ma quando ho incollato in vim v'è una pausa prima che l'ultimo carattere ?.
Sto usando preg_replace con il modello di espressione regolare / [^ \ p {} L \ p {Nd} \ p {Mn} _] / u per le parole corrispondenti. Ma questo sta trattando l'ultimo carattere come parola separata.
Questa è la mia stringa di input ?????????, ?????? e mi aspetto l'uscita di essere ????????? ?????? dopo la preg_replace
$cleanedString = preg_replace('/[^\p{L}\p{Nd}\p{Mn}_]/u', ' ', $name);
Ma l'uscita sto ottenendo è ????????? ???? ?. Che cosa sto facendo male qui? Credo che il problema inizia da come vim gestito il testo ho incollato.
Soluzione
Prova questo regex "/[^\p{L}\p{Nd}\p{Mn}\p{Mc}_]/u"
Il simbolo O
in लौ
prende spazio orizzontale in contrasto con il ae
in मै
. Il \p{Mn}
classe unicode corrisponde marchi solo senza spaziatura. Utilizzare \p{Mc}
per abbinare spaziatura-segni. È possibile utilizzare \p{M}
per abbinare tutti-i marchi che conciliano: "/[^\p{L}\p{Nd}\p{M}_]/u"
regular-expressions.info/unicode
.
\p{M}
o\p{Mark}
: un personaggio destinati ad essere combinato con un altro carattere (per esempio accenti, dieresi, scatole di chiusura, ecc.)
- .
\p{Mn}
o\p{Non_Spacing_Mark}
: un personaggio destinati ad essere combinato con un altro personaggio senza occupare spazio aggiuntivo (ad esempio gli accenti, dieresi, ecc.)- .
\p{Mc}
o\p{Spacing_Combining_Mark}
: un personaggio destinati ad essere combinato con un altro personaggio che occupa spazio aggiuntivo (segni vocalici in molte lingue orientali)\p{Me}
o\p{Enclosing_Mark}
: un personaggio che racchiude il carattere è si combina con (cerchio, quadrato, keycap, etc.).