php怎么将中文利用正则表达式匹配出来
正则匹配中文汉字根据页面编码不同而略有区别:
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的
那么,之所以乱码,我猜想有这些原因:
文档标题没加utf-8编码标识:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
文档编码非utf-8,这个使用编辑器另存为即可;
你的字符串来源非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 ] )
第一个参数:要处理的字符串
第二个参数:目标编码
第三个参数:内容原编码
函数返回字符串