加入收藏 | 设为首页 | 会员中心 | 我要投稿 南阳站长网 (https://www.0377zz.cn/)- 专有云、图像技术、AI硬件、云计算、数据集成!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现的数组和XML文件相互转换功能示例

发布时间:2022-07-15 11:28:36 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP实现的数组和XML文件相互转换功能,结合实例形式分析了php针对xml格式数据与数组相互转换操作技巧,需要的朋友可以参考下。 本文实例讲述了PHP实现的数组和XML文件相互转换功能,分享给大家供大家参考,具体如下: 最近搞微信支付,微信
  这篇文章主要介绍了PHP实现的数组和XML文件相互转换功能,结合实例形式分析了php针对xml格式数据与数组相互转换操作技巧,需要的朋友可以参考下。
 
  本文实例讲述了PHP实现的数组和XML文件相互转换功能,分享给大家供大家参考,具体如下:
 
  最近搞微信支付,微信服务器返回的都是XML文件,所以需要转换成数组,才会便于操作,好了话不多说,直接上代码:
 
  1. XML转数组
 
  /**
   * 将xml转为array
   * @param string  $xml xml字符串或者xml文件名
   * @param bool   $isfile 传入的是否是xml文件名
   * @return array  转换得到的数组
   */
  function xmlToArray($xml,$isfile=false){
    //禁止引用外部xml实体
    libxml_disable_entity_loader(true);
    if($isfile){
      if(!file_exists($xml)) return false;
      $xmlstr = file_get_contents($xml);
    }else{
      $xmlstr = $xml;
    }
    $result= json_decode(json_encode(simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
    return $result;
  }
  用法示例:
 
  $xmlDoc=<<<ETO
  <books>
   <book>
   <author>Jack Herrington</author>
   <title>PHP Hacks</title>
   <publisher>O'Reilly</publisher>
   </book>
   <book>
   <author>Jack Herrington</author>
   <title>Podcasting Hacks</title>
   <publisher>O'Reilly</publisher>
   </book>
   <book>
   <author>XML格式化</author>
   <title>脚本之家在线工具</title>
   <publisher>tools.jb51.net</publisher>
   </book>
  </books>
  ETO;
  $relarr=xmlToArray($xmlDoc);
  print_r($relarr);
  运行结果:
 
  Array
  (
    [book] => Array
      (
        [0] => Array
          (
            [author] => Jack Herrington
            [title] => PHP Hacks
            [publisher] => O'Reilly
          )
        [1] => Array
          (
            [author] => Jack Herrington
            [title] => Podcasting Hacks
            [publisher] => O'Reilly
          )
        [2] => Array
          (
            [author] => XML格式化
            [title] => php粉丝网
            [publisher] => www.phpfensi.com
          )
      )
  )
  2. 数组转XML
 
  /**
   * 数组转xml字符
   * @param string  $xml xml字符串
  **/
  function arrayToXml($data){
    if(!is_array($data) || count($data) <= 0){
      return false;
    }
    $xml = "<xml>";
    foreach ($data as $key=>$val){
      if (is_numeric($val)){
        $xml.="<".$key.">".$val."</".$key.">";
      }else{
        $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
      }
    }
    $xml.="</xml>";
    return $xml;
  }
  用法示例:
 
  $arrDoc= array("author"=>"XML格式化","title"=>"php粉丝网","publisher"=>"www.phpfensi.com");
  $xmlrel=arrayToXml($arrDoc);
  //运行结果:<xml><author><![CDATA[XML格式化]]></author><title><![CDATA[脚本之家在线工具]]></title><publisher><![CDATA[tools.jb51.net]]></publisher></xml>

(编辑:南阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读