php中的正则表达式匹配时中文长度的问题,请看描述

我用 /^.{3,30}$/ 这个表达式在网页上的正则表达式工具进行测试,能测通。

网页工具测试数据:啊 返回结果:0
网页工具测试数据:啊啊啊 返回结果:1

php中的测试数据:啊 返回结果:1
php中的测试数据:啊啊啊 返回结果:1

通过测试我发现,php中正则在测试的时候,直接认为“啊”这个字为3个字符,所以匹配通过。
这个问题怎么解决??我期望得到的是网页工具上的测试结果。

阅读 2k
1 个回答

正则表达式外增加一个u修饰符,指示输入字符按utf-8编码处理
网页工具地址http://jsrun.pro/app/phpregex

<?php 
//  本工具采用Linux/PHP运行环境运行代码

$content = '啊啊';
$regex =  '/^.{3,30}$/u'  ;
// $regex='';

if(preg_match($regex, $content, $mc)){
    echo "匹配内容:\n $mc[0] ";
    $mc[0];
} else {
    echo "未匹配到内容";
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题