PHP正则表达式读取xml数据的代码举例

发布时间:2020-08-22编辑:脚本学堂
本文介绍下,php借助正则表达式读取xml数据的例子,有需要的朋友,参考下吧。

以下示例使用php中的正则表达式,进行xml文件的读取。

1、xml文件内容,person.xml
 

复制代码 代码示例:
<?xml version="1.0 encoding="UTF-8"?> 
      <humans> 
      <zhangying> 
      <name>张映</name> 
      <sex>男</sex> 
      <old>28</old> 
      </zhangying> 
      <tank> 
      <name>tank</name> 
      <sex>男</sex> 
      <old>28</old> 
      </tank> 
</humans> 

2、php处理文件,rexml.php
 

复制代码 代码示例:
<?php 
    /***
    @ 使用正则表达式读取xml文件
    @ Recoded By Androidyue
    @ site www.jb200.com
    ***/ 
      $xml = ""; 
      //只读模式打开所读取的文件 
      $f = fopen('person.xml', 'r'); 
      //格式化获取读取的数据 
      while( $data = fread( $f, 4096 ) ) { 
       $xml .= $data; 
      } 
      //关闭一个已打开的文件指针 
      fclose( $f ); 
      // 上面读取数据 
      preg_match_all( "//<humans/>(.*?)/<//humans/>/s", $xml, $humans );       //匹配最外层标签里面的内容 
        //格式化数据 
      foreach( $humans[1] as $k=>$human ){ 
       preg_match_all( "//<name/>(.*?)/<//name/>/", $human, $name );             //匹配出名字 
       preg_match_all( "//<sex/>(.*?)/<//sex/>/", $human, $sex );                        //匹配出性别 
       preg_match_all( "//<old/>(.*?)/<//old/>/", $human, $old );                        //匹配出年龄 
      } 
        //处理结果数据 
        foreach($name[1] as $key=>$val){ 
          echo $val." - ".$sex[$key][1]." - ".$old[$key][1]."<br>" ; 
        } 
    ?> 
 

注意:
两个文件的编码格式,请保持一致,最好都设成UTF8的字符集,以免出现莫名的错误。