preg_按长度匹配多字节字符


preg_match multi-byte characters by length

我有一些印度语言编码的数据。我想删除只有一个或两个字符的部分,例如这是两个字符:

ಎನ್

但是它们是多字节的

我试着用正则表达式匹配这些:

'~'b[^ ]{1,2}'b~u'

,但它不工作。任何想法?

根据选择的答案,解决方案将使用mb_ereg函数。

mb_regex_encoding( 'UTF-8' );
setlocale( LC_CTYPE, 'en_US.UTF-8' );
$str = 'ಆರ್‌ ವೆಂಕಟಲಕ್ಷ್ಮಿ ಎಸ್‌ ಎನ್‌ ಎನ್‌ ಪದ್ಮಾವತಿ ಎನ್';
echo $str . "'n";
echo mb_ereg_replace( ''b[^'s]{2,4}'b', ' @ ', $str );
echo "'n";
结果:

 @ ‌ ವೆಂಕಟಲಕ್ಷ್ಮಿ  @ ‌  @ ‌  @ ‌ ಪದ್ಮಾವತಿ  @

使用多字节安全函数mb_regex_encoding()mb_ereg_replace()。(我不相信第一个是强制性的。也可以尝试不使用,看看是否足够)