www.adminn.cn
站长正能量分享网!

php中simplexml_load_string使用实例分享

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

这篇文章主要介绍了php中simplexml_load_string使用实例,需要的朋友可以参考下,先用一段代码重现一下问题,乍一看,结果很让人费解:

  1. $string = << 
  2.   
  3. hello 
  4. world 
  5.  
  6. EOF; 
  7.  
  8. $data = simplexml_load_string($string); 
  9.  
  10. print_r($data);  
  11. print_r($data->foo);  

乍一看,结果很让人费解:

  1. SimpleXMLElement Object  
  2. (  
  3. [foo] => Array  
  4. (  
  5. [0] => SimpleXMLElement Object  
  6. (  
  7. [bar] => hello  
  8. )  
  9. [1] => SimpleXMLElement Object  
  10. (  
  11. [bar] => world  
  12. )  
  13. )  
  14. )  
  15. SimpleXMLElement Object  
  16. (  
  17. [bar] => hello  

明明print_r显示foo是一个有两个bar元素的数组,但是最后却仅仅显示了一个bar元素!

原因其实很简单,在如上所示simplexml_load_string的结果里,foo并不是数组,而是一个迭代对象!

可以这样确认:

<eof 

  1. foreach ($data->foo as $v) print_r($v);  
  2. foreach ($data->children() as $v) print_r($v); 

看来,print_r或者var_dump之类的表象并不完全可信,自己多留心吧。

假如我们获取的XML数据如下:(可以使用curl、fsockopen等方式获取),代码如下:

  1. 你好 
  2.  
  3. Array;Array;Array; 
  4.  
  5.  Haven't seen you for a long time. How are you? 
  6.  多日不见了,你好吗? 
  7.  
  8.  
  9.  Hello! How are you? 
  10.  嘿,你好? 
  11.  
  12.  
  13.  Hello, Brooks!How are you? 
  14.  喂,布鲁克斯!你好吗? 
  15.  
  16.  
  17.  Hi, Barbara, how are you? 
  18.  嘿,芭芭拉,你好吗? 
  19.  
  20.  
  21.  How are you? -Quite well, thank you. 
  22.  你好吗?-很好,谢谢你。 

经过simplexml_load_string得到:

  1. SimpleXMLElement Object 
  2.     [@attributes] => Array 
  3.         ( 
  4.             [num] => 219 
  5.             [id] => 219 
  6.             [name] => 219 
  7.         ) 
  8.  
  9.     [key] => 你好 
  10.     [pos] => SimpleXMLElement Object 
  11.         ( 
  12.         ) 
  13.  
  14.     [acceptation] => Array;Array;Array; 
  15.     [sent] => Array 
  16.         ( 
  17.             [0] => SimpleXMLElement Object 
  18.                 ( 
  19.                     [orig] => Haven't seen you for a long time. How are you? 
  20.                     [trans] => 多日不见了,你好吗? 
  21.                 ) 
  22.  
  23.             [1] => SimpleXMLElement Object 
  24.                 ( 
  25.                     [orig] => Hello! How are you? 
  26.                     [trans] => 嘿,你好? 
  27.                 ) 
  28.  
  29.             [2] => SimpleXMLElement Object 
  30.                 ( 
  31.                     [orig] => Hello, Brooks!How are you? 
  32.                     [trans] => 喂,布鲁克斯!你好吗? 
  33.                 ) 
  34.  
  35.             [3] => SimpleXMLElement Object 
  36.                 ( 
  37.                     [orig] => Hi, Barbara, how are you? 
  38.                     [trans] => 嘿,芭芭拉,你好吗? 
  39.                 ) 
  40.  
  41.             [4] => SimpleXMLElement Object 
  42.                 ( 
  43.                     [orig] => How are you? -Quite well, thank you. 
  44.                     [trans] => 你好吗?-很好,谢谢你。 
  45.                 ) 
  46.  
  47.         ) 
  48.  

我们在PHP语言中可以用以下方法取得我们想要的值:

  1. $data = << 
  2.  你好 
  3.   
  4.  Array;Array;Array; 
  5.   
  6.   Haven't seen you for a long time. How are you? 
  7.   多日不见了,你好吗? 
  8.  
  9.   
  10.   Hello! How are you? 
  11.   嘿,你好? 
  12.  
  13.   
  14.   Hello, Brooks!How are you? 
  15.   喂,布鲁克斯!你好吗? 
  16.  
  17.   
  18.   Hi, Barbara, how are you? 
  19.   嘿,芭芭拉,你好吗? 
  20.  
  21.   
  22.   How are you? -Quite well, thank you. 
  23.   你好吗?-很好,谢谢你。 
  24.  
  25.  
  26. XML; 
  27. $xmldata = simplexml_load_string($data); 
  28. header("Content-Type: text/html; charset=UTF-8"); 
  29. print_r($xmldata); 
  30. echo " 
  31. ".trim($xmldata->sent[0]->orig); //Haven't seen you for a long time. How are you? 
  32. echo " 
  33. ".trim($xmldata->key); //你好 
  34. ?> 

</eof 

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php中simplexml_load_string使用实例分享》
文章链接:https://www.adminn.cn/news/8558.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

扫码支付后请联系右侧QQ发送下载地址!!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏