我现在正在研究一些系统几个小时,这个小东西对我来说太过于逻辑思考了。 通常我会等几个小时,但这是最后一分钟的工作,我需要完成这个。
这是我的问题:
我有一个XML文件发布到我的PHP文件,PHP文件将某些数据插入到数据库中,但某些XML节点具有相同的名称:
<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>
现在我想获得一个var $ acclist,其中包含逗号分隔的所有值: value1,value2,value3,
我敢打赌,解决这个问题的方法非常简单,但我知道即便是最简单的代码也会变成麻烦。谷歌搜索只会出现以某种方式拥有自己标识符的节点。
有人可以帮帮我吗?
答案 0 :(得分:0)
您可以尝试使用simplexml_load_string来解析html,然后在转换为数组后在节点上调用implode。
注意此代码在php 5.4.6中进行了测试,其行为符合预期。
<?php
$xml = '<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>';
$dat = simplexml_load_string($xml);
echo implode(",",(array)$dat->accessoire);
对于5.3.x,我不得不改为
$xml = '<accessoires>
<accessoire>value1</accessoire>
<accessoire>value2</accessoire>
<accessoire>value3</accessoire>
</accessoires>';
$dat = simplexml_load_string($xml);
$dat = (array)$dat;
echo implode(",",$dat["accessoire"]);
答案 1 :(得分:-1)
您可以通过获取能够解析和处理XML的库来实现此目的,例如使用SimpleXML:
implode(',', iterator_to_array($accessoires->accessoire, FALSE));
这里的关键部分是使用iterator_to_array()
,因为SimpleXML在这里提供了同名的子元素作为迭代器。否则$accessoires->accessoire
会自动神奇地为您提供第一个元素(如果有的话)。