关于正则表达式中全角冒号的问题请教大大

下面这个正则,可以正常截取到全角冒号前的汉字“黄金炮”<?$str="黄金炮:吾人";$preg='/^([^\:]*)/i';preg_match($preg,$str... 下面这个正则,可以正常截取到全角冒号前的汉字“黄金炮”
<?
$str="黄金炮:吾人";
$preg = '/^([^\:]*)/i';
preg_match($preg, $str, $matchs);
echo $matchs[0];
?>
但是如果把$str改为$str="合金炮:吾人"; 这个语句就截取不到任何汉字,请问这是什么原因呢?$preg后面的这个正则应该怎么改?
展开
 我来答
缘木求木鱼
2013-11-07 · TA获得超过2387个赞
知道小有建树答主
回答量:532
采纳率:100%
帮助的人:996万
展开全部
应该是编码造成的问题。我在某个工具中重现了这个现象。
你可能是用GBK保存代码的吧。
请保存为任意一种Unicode编码(比如 UTF-8 )试试。
albumin
2013-11-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2391万
展开全部
也许与汉字作为两个字节分开处理有关$preg改为

$preg = '/^([^\]*(?<=:))/';
更多追问追答
追问
这个正则测试也是无法截取的
追答
这个中括号中的\完全是多余的,如果是要表示字符\得写成\\,所以去掉了
$preg='/^([^:]*)/'
或者
$preg='/^\p{Han}*/u'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式