当前位置:首页 > PHP教程 > php应用 > 列表

php中simplexml_load_string使用实例分享

发布:smiling 来源: PHP粉丝网  添加日期:2020-09-14 14:49:01 浏览: 评论:0 

这篇文章主要介绍了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并不是数组,而是一个迭代对象!

可以这样确认:

  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. ?> 

Tags: simplexml_load_string

分享到: