php中simplexml_load_string使用_PHP教程

php中文网
发布: 2016-07-13 10:39:06
原创
939人浏览过

   先用一段代码重现一下问题

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

 代码如下  

$string =  
hello 
world 
 
EOF;

$data = simplexml_load_string($string);

print_r($data); 
print_r($data->foo); 
?>

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

 代码如下  

SimpleXMLElement Object 

[foo] => Array 

[0] => SimpleXMLElement Object 

[bar] => hello 

[1] => SimpleXMLElement Object 

[bar] => world 



SimpleXMLElement Object 

[bar] => hello 
)

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

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

立即学习PHP免费学习笔记(深入)”;

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

  可以这样确认:

 代码如下  

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

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

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

 代码如下  


 你好
 
 Array;Array;Array;
 
  Haven't seen you for a long time. How are you?
  多日不见了,你好吗?
 

 
  Hello! How are you?
  嘿,你好?
 

 
  Hello, Brooks!How are you?
  喂,布鲁克斯!你好吗?
 

 
  Hi, Barbara, how are you?
  嘿,芭芭拉,你好吗?
 

 
  How are you? -Quite well, thank you.
  你好吗?-很好,谢谢你。
 

  经过simplexml_load_string得到:

 代码如下  

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [num] => 219
            [id] => 219
            [name] => 219
        )

    [key] => 你好www.111cn.Net
    [pos] => SimpleXMLElement Object
        (
        )

    [acceptation] => Array;Array;Array;
    [sent] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [orig] => Haven't seen you for a long time. How are you?
                    [trans] => 多日不见了,你好吗?
                )

            [1] => SimpleXMLElement Object
                (
                    [orig] => Hello! How are you?
                    [trans] => 嘿,你好?
                )

            [2] => SimpleXMLElement Object
                (
                    [orig] => Hello, Brooks!How are you?
                    [trans] => 喂,布鲁克斯!你好吗?
                )

            [3] => SimpleXMLElement Object
                (
                    [orig] => Hi, Barbara, how are you?
                    [trans] => 嘿,芭芭拉,你好吗?
                )

            [4] => SimpleXMLElement Object
                (
                    [orig] => How are you? -Quite well, thank you.
                    [trans] => 你好吗?-很好,谢谢你。
                )

        )

)

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

 代码如下  

$data =

 你好
 
 Array;Array;Array;
 
  Haven't seen you for a long time. How are you?
  多日不见了,你好吗?
 

 
  Hello! How are you?
  嘿,你好?
 

 
  Hello, Brooks!How are you?
  喂,布鲁克斯!你好吗?
 

 
  Hi, Barbara, how are you?
  嘿,芭芭拉,你好吗?
 

 
  How are you? -Quite well, thank you.
  你好吗?-很好,谢谢你。
 


XML;
$xmldata = simplexml_load_string($data);
header("Content-Type: text/html; charset=UTF-8");
print_r($xmldata);
echo "
".trim($xmldata->sent[0]->orig); //Haven't seen you for a long time. How are you?
echo "
".trim($xmldata->key); //你好
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/733191.htmlTechArticle先用一段代码重现一下问题 乍一看,结果很让人费解: 代码如下 ?php $string = EOF data foobarhello/bar/foo foobarworld/bar/foo /data EOF; $data = simplexml_...
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号