php xml空格去除,XML文件空格符问题

XML文件

我把上述xml的信息转存到mysql,在查询的时候发现中间带有空格键的某些值是可以查询的,而某些却查询不到.

比如

SELECT * FROM `dux_region` WHERE `region_name` = 'Aland lslands' 可以查询出来

而手写的'United States'

SELECT * FROM `dux_region` WHERE `region_name` = 'United States' 不能查出数据

但是从XML中复制的 ‘United States’却可以

网上说是中间 空格符 的问题

这个问题如何解决

回复讨论(解决方案)

可能存在 2 字节的 utf-8 空白字符

贴出经 base64 编码的原始 XML 的内容

文件太大了,我贴出一部分吧。

你这样贴是没有用的!

因为经复制粘贴和 CSDN 编辑器处理后,一些特殊字符就不复存在了

你要么贴出 echo base64_encode(file_get_contents('你的xml文件')); 的结果

要么就把你的xml文件放到网盘上

这种东西?77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxMb2NhdGlvbj4NCiAgPENvdW50cnlSZWdpb24gTmFtZT0iQWZnaGFuaXN0YW4iIENvZGU9IkFGRyI+DQogICAgPFN0YXRlID4NCiAgICAgIDxDaXR5IE5hbWU9IkhlcmF0IiBDb2RlPSJIRUEiLz4NCiAgICAgIDxDaXR5IE5hbWU9IkthYnVsIiBDb2RlPSJLQkwiLz4NCiAgICAgIDxDaXR5IE5hbWU9IkthbmRhaGFyIiBDb2RlPSJLREgiLz4NCiAgICAgIDxDaXR5IE5hbWU9Ik1hemFyLWkgU2hhcmlmIiBDb2RlPSJNWlIiLz4NCiAgICA8L1N0YXRlPg0KICA8L0NvdW50cnlSZWdpb24+DQogIDxDb3VudHJ5UmVnaW9uIE5hbWU9IkFsYW5kIGxzbGFuZHMiIENvZGU9IkFMQSIgLz4NCiAgPENvdW50cnlSZWdpb2

http://pan.baidu.com/s/1kTCCDtd

网盘地址

太大了?贴不下?

你贴出的部分没有发现异常

太大了?贴不下?

你贴出的部分没有发现异常

恩比较大 有部分出现了异常

我在楼上贴了网盘文件地址

$s = file_get_contents('D:\我的文档\Downloads\全球各国省市(英文版).xml');preg_match_all('/United.+/m', $s, $m);foreach($m[0] as $v) { echo "$v\n"; echo bin2hex($v), PHP_EOL;}United  Arab  Emirates" Code="ARE">

556e69746564 c2a041726162 c2a0456d6972617465732220436f64653d22415245223e0d

United Kingdom" Code="GBR">

556e69746564c2a04b696e67646f6d2220436f64653d22474252223e0d

United States" Code="USA">

556e69746564c2a05374617465732220436f64653d22555341223e0d

United States Minor Outlying Islands" Code="UMI" />

556e69746564c2a0537461746573c2a04d696e6f72c2a04f75746c79696e67c2a049736c616e64732220436f64653d22554d4922202f3e0d

看到了吧?那可不是空格哟,虽然表现一样

而反过来查 preg_match_all('/.+\xc2\xa0.+/m', $s, $m);foreach($m[0] as $v) { echo "$v\n"; echo bin2hex($v), PHP_EOL;}就更多了

在 gbk 环境中可看到.......真的贴不下了

谢谢版主,问题已经解决,以前没碰到过这种问题,今天又学到了一招。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值