preg_match_all 的中文乱码问题
$saddress = str_replace($filter,"",$string['8']);
preg_match_all ("/(.*)小区|(.*)学院|(.*)大厦|(.*)镇|(.*)乡|(.*)村|(.*)交叉口|(.*)交汇处|(.*)街|(.*)路/",
$saddress,
$out, PREG_PATTERN_ORDER);
$saddress = $out['0']['0'];
$string['8'] 是一个中文地址 例如 四川省 成都市XX街道XX小区X号某楼
$saddress 是处理过的地址
使用中发现大部分都是正确的 但是一些地址处理的时候 saddress会是乱码,请教如何解决
应该是preg_match_all中文处理的一个小BUG
作者: feixuehenshui 发布时间: 2011-06-01
作者: gosenz 发布时间: 2011-06-01
作者: feixuehenshui 发布时间: 2011-06-01
作者: sibang 发布时间: 2011-06-01
在正则匹配之前先echo输出$saddress和$string['8']看看乱码吗
不乱码
作者: feixuehenshui 发布时间: 2011-06-01
作者: yuweiqing120 发布时间: 2011-06-01
产生乱码的位置是 $saddress = str_replace($filter,"",$string['8']);
而不是 preg_match_all ("/(.*)小区|(.*)....
作者: xuzuning 发布时间: 2011-06-01
如果你使用的是 gbk 编码,这种情况是可能发生的
产生乱码的位置是 $saddress = str_replace($filter,"",$string['8']);
而不是 preg_match_all ("/(.*)小区|(.*)....
哦,对,他把一个汉字拆成了两部分
作者: sibang 发布时间: 2011-06-01
如果你使用的是 gbk 编码,这种情况是可能发生的
产生乱码的位置是 $saddress = str_replace($filter,"",$string['8']);
而不是 preg_match_all ("/(.*)小区|(.*)....
唠叨老大好久不见 问个好 你还在CSDN啊 ,我原来经常上CSDN的时候是2004年 当时天天见你
ADDRESS确实是GBK编码 只有2个字段是GBK编码 其他数据库里都是2312 应为地址是从EXCEL导入的 地址是从别的地方过来的 你说的有道理 那这种怎么解决呢?
作者: feixuehenshui 发布时间: 2011-06-01
引用 6 楼 xuzuning 的回复:
如果你使用的是 gbk 编码,这种情况是可能发生的
产生乱码的位置是 $saddress = str_replace($filter,"",$string['8']);
而不是 preg_match_all ("/(.*)小区|(.*)....
唠叨老大好久不见 问个好 你还在CSDN啊 ,我原来经常上CSDN的时候是2004年 当时天天……
更换编码,你试试utf-8
作者: sibang 发布时间: 2011-06-01
||
\/
php的mb_substr
或者
preg_replace [pattern = "/^.{7}(.).*$/us", replacement = "$1"]
作者: rcom10002 发布时间: 2011-06-01