php怎么将中文利用正则表达式匹配出来

preg_match_all("/[\x{4e00}-\x{9fa5}]+/u",$str,$chinese);每次用这个总是乱码。例如我想把变量中账单123,将账单提取... preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $str, $chinese); 每次用这个总是乱码。例如我想把变量中 账单123 ,将账单提取出来并且赋在一个变量上。 展开
 我来答
飲鴆_止渴
2013-11-27 · TA获得超过1232个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:542万
展开全部

正则匹配中文汉字根据页面编码不同而略有区别:

GBK/GB2312编码:[x80-xff]+ 或 [xa1-xff]+

UTF-8编码:[x{4e00}-x{9fa5}]+/u

$str = "账单123";
//GBK/GB2312使用: 
preg_match_all("/[\x80-\xff]+/", $str, $chinese);
//UTF-8 使用:
//preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $str, $chinese);
print_r($chinese);

阁下所说的乱码应该就是编码没弄对了

追问
但是我的编码是utf-8的
追答

那么,之所以乱码,我猜想有这些原因:

  1. 文档标题没加utf-8编码标识:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  2. 文档编码非utf-8,这个使用编辑器另存为即可;

  3. 你的字符串来源非utf-8,比如是从别处抓取而来,比如是从文件中读取而来,而非在自己的页面上定义,那么这个字符串自然就是源头处的编码了,可以使用PHP转码:

$str= iconv('GBK','UTF-8′,$str);
//或: 
//$str= mb_convert_encoding($str,'UTF-8','GBK');

 

string iconv ( string $in_charset , string $out_charset , string $str )
第一个参数:内容原的编码
第二个参数:目标编码
第三个参数:要转的字符串
函数返回字符串

 

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
第一个参数:要处理的字符串
第二个参数:目标编码

第三个参数:内容原编码

函数返回字符串

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式