我正在开发一个web应用程序使用PHP 5.3.x。一切都很好,但无法解决一个问题,由于正则表达式问题与孟加拉标点符号。下面是我的代码:
$value = 'u09ACu09BEu0982u09B2u09BEu09A6u09C7u09B6';
$value = mb_convert_encoding($value, 'UTF-8', 'UTF-16BE');
//$value = 'বাংলাদেশ';
//$value = 'Bangladesh';
$pattern = '/^[p{Bengali}]{0,100}$/';
//$pattern = '/^[p{Latin}]{0,45}$/';
echo preg_match($pattern, $value);
无论我是否传递孟加拉字,它总是返回false
。在JavaEE应用程序中,我使用了这个正则表达式
p{InBengali}
但是在PHP中它不工作!无论如何,我如何解决这个问题?
也许这对你有帮助:
PHP preg函数是基于PCRE的,当/u选项被附加到正则表达式后,它支持Unicode。
只需在u后面加上表达式
$value = 'বাংলাদেশ';
//$pattern = '/^[p{Bengali}]{0,100}$'; wrong
$pattern = '/^[p{Bengali}]{0,100}$/u'; //right
echo preg_match($pattern, $value);
那些像我一样面临困难的人可以和我们一起享受。