易截截图软件、单文件、免安装、纯绿色、仅160KB

xml文档里含有特殊字符时的处理方法(php)

  本文首发代码天下,转载请注明来源代码天下,谢谢。
  今天上班时遇到一个问题,游戏官反应一个用户充不了值。充不了值一般为用户角色不正确,我仔细检查发现该用户角色有点异常,因为对方返回角色是xml,我贴上来给大家看一下:
<Result value="true" message="Success!">   <Item ID="79965" UserName="ming358" NickName="丅①站0&#x1;寂寞" Grade="18" Repute="25" Sex="false" WinCount="577" TotalCount="654" ConsortiaName="次时代" Rename="false" ConsortiaRename="false" EscapeCount="0" IsFirst="109" /> </Result> 
原来,这个xml里有&符号,这个&符号在.NET里是可以正常读取的,但是在php里是不行的,php里如果加载的话,会发生以下错误:
Warning: DOMDocument::load() [function.DOMDocument-load]: xmlParseCharRef: invalid xmlChar value 1 in file:///E%3A/phpsite/web2.7k7k.com/games/test.xml, line: 4 in E:\phpsite\web2.7k7k.com\read_xml.php on line 5
因为官方程序是.net,在返回xml过程中,忽略了对特殊符号的过滤,“&#x1;”就是用户输入火星文产生的一个特殊符号。于是给官方联系,他们说这个接口时不能改的,牵扯到多个运营商唧唧歪歪说了一通,总之,接口时不能改的,自己想办法吧。我是那个郁闷啊,你传过来数据就是不对的,让我想办法改啊?生气没用,问题还得解决,于是只能想其它办法了:先用file_get_contents获取数据,把&符号替换为自己能识别的字符,例如{xml},然后用simplexml_load_string函数转化为数组,最后再把{xml}替换为&,ok,问题解决。代码如下:
$result = file_get_contents("http://www.code163.com/test.php?user=code163"); //获取xml  echo $result;        $result = str_replace("&","{xml}",$result);       $string = <<<XML      $result  XML;    $xml = simplexml_load_string($string);  //载入   //$xml = simplexml_load_file($str);   $part =&


相关文档:

XML常用操作

 XML在我们的程序中用到的越来越多,因为它存储、读取、修改都比较方便。
下面我来分享一下XML的常用操作(增删改查),下面是程序运行效果:
增(增加节点包括创建XML):
/// <summary>
/// 创建XML文档
/// </summary>
/// <param name="path"></param>
......

.net 操作XML小结

一、简单介绍
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(path);
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
//指定一个节点
XmlNode root=xml.SelectSingleNode("/root");
//获取节点下所有直接子节点
XmlNodeList ch ......

PHP+DOM创建XML文件

创建文档类型声明
一般而言,XML声明放在文档顶部。在PHP中声明十分简单:只需实例化一个DOM文档类的对象并赋予它一个版本号。查看程序清单A:
程序清单 A
<?php
// create doctype
$dom = new DOMDocument("1.0");
// display document in browser as plain text
// display document in browser as plain text ......

Perl解析XML文件时的字符集编码问题

http://stackoverflow.com/questions/1112828/cannot-decode-string-with-wide-characters-appears-on-a-weird-place
http://man.ddvip.com/web/xmlzhzn/xml_cn/xml_encoding.asp.htm
http://bbs.xml.org.cn/dispbbs.asp?boardID=8&ID=7226
http://topic.csdn.net/t/20030909/13/2240153.html
#
http://www.ezloo. ......

防范php木马

1、防止跳出web目录 (严重采用)
  首先修改httpd.conf,如果你只允许你的php脚本程序在web目录里操作,还可以修改httpd.conf文件限制php的操作路径。比如你的web目录是/usr/local/apache/htdocs,那么在httpd.conf里加上这么几行:
  php_admin_value open_basedir /usr/local/apache/htdocs
  这样,如果脚本要 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号