PHP的正则表达式中使用中文(并匹配中文)的问题,原串为UTF8
即preg_match('/.../',$str,$result);中的'/.../'和$str均包含中文,想从$str中取出满足'/.../'正则的字串。当$str为A...
即
preg_match('/.../', $str, $result);
中的'/.../'和$str均包含中文,想从$str中取出满足'/.../'正则的字串。
当$str为ASCII编码的时候工作正常,但当$str为UTF8编码的时候就反回空的$result了。
我尝试过:
1) iconv将$str从UTF8转为ISO-8859-1,iconv失败。
2) mb_convert_encoding将$str从UTF8转为ASCII,成功。但转出来的ASCII串已经面目全非,看不出中文了。所以也没法用。
3) mb_ereg_match只能判断不能取。
使用\S占位可以解决部分问题(如两个中文汉字可用\S{4}),但如果要准确匹配某段中文字却不行。
我想要的是准确匹配如"中国"这个词。 展开
preg_match('/.../', $str, $result);
中的'/.../'和$str均包含中文,想从$str中取出满足'/.../'正则的字串。
当$str为ASCII编码的时候工作正常,但当$str为UTF8编码的时候就反回空的$result了。
我尝试过:
1) iconv将$str从UTF8转为ISO-8859-1,iconv失败。
2) mb_convert_encoding将$str从UTF8转为ASCII,成功。但转出来的ASCII串已经面目全非,看不出中文了。所以也没法用。
3) mb_ereg_match只能判断不能取。
使用\S占位可以解决部分问题(如两个中文汉字可用\S{4}),但如果要准确匹配某段中文字却不行。
我想要的是准确匹配如"中国"这个词。 展开
3个回答
展开全部
<?php
$str = "中国势力是(烟消云散、再转在、匣介)中国、类别置顶帖(来哦见好就收)、炒肉可示、需要城";
$preg2 = "/中国/sim" ;
preg_match_all($preg2, $str, $strResult, PREG_PATTERN_ORDER);
print_r($strResult);
?>
我的PHP文件是UTF-8编码,不知道你的$str是从哪里得到的呢?像上面一样,我直接给$str赋值,这样使用 /中国/sim 这个表达式没有任何问题,会不会是你$str字符串的编码与页面编码不一致呢?
$str = "中国势力是(烟消云散、再转在、匣介)中国、类别置顶帖(来哦见好就收)、炒肉可示、需要城";
$preg2 = "/中国/sim" ;
preg_match_all($preg2, $str, $strResult, PREG_PATTERN_ORDER);
print_r($strResult);
?>
我的PHP文件是UTF-8编码,不知道你的$str是从哪里得到的呢?像上面一样,我直接给$str赋值,这样使用 /中国/sim 这个表达式没有任何问题,会不会是你$str字符串的编码与页面编码不一致呢?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前两天我刚做了做过这个,共享下吧
preg_match("/[".chr(228).chr(128).chr(128)."-".chr(233).chr(191).chr(191)."]/",'',$nick);
这句就能识别所有的UTF-8的中文
具体可以看我的空间,http://hi.baidu.com/nbcc/blog/item/996e1cfaf98e609e58ee905b.html
preg_match("/[".chr(228).chr(128).chr(128)."-".chr(233).chr(191).chr(191)."]/",'',$nick);
这句就能识别所有的UTF-8的中文
具体可以看我的空间,http://hi.baidu.com/nbcc/blog/item/996e1cfaf98e609e58ee905b.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注
我也在找寻该问题答案
我也在找寻该问题答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询