php 任意字符串_php正则表达式替换字符串中汉字以外的任意字符

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

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,这个使用编辑器另存为即可;

你的字符串来源非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 ] )

第一个参数:要处理的字符串

第二个参数:目标编码

第三个参数:内容原编码

函数返回字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值