易截截图软件、单文件、免安装、纯绿色、仅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 =&


相关文档:

C# Xml中映射为类数据结构(报文)

        [System.Runtime.Serialization.DataMemberAttribute()]
        public Information Archive {
            get {
         &n ......

php下哪种方法合适解析xml,转换成json格式

解析xml文档的类库有很多种,比较常用的就是SimpleXML,DOM Document,XMLReader,基于SAX的xml_parse函数。
根据xml文档结构,以及需求的不同,要选择好对应的类库。
解析小的文档的话,使用SimpleXML比较合适,简单的几个函数就可以搞定。
如果文档非常巨大,最好是XMLReader打开,中间转换成DOM来解析,感觉DOM与XPat ......

防范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
  这样,如果脚本要 ......

基于PHP网页快照类

<?PHP
//====================================================
//                FileName:        snap.class.php
//             ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号