2013-07-02 68 views
0

我正在一些系統上工作幾個小時,現在這個小東西對我來說太合邏輯了。 通常我會等幾個小時,但這是最後一分鐘的工作,我需要完成這一點。通過xml值創建逗號分隔的字符串

這裏是我的問題:

我有被貼到我的PHP文件的XML文件,PHP文件中插入某些數據到數據庫中,但是一些XML節點具有相同的名:

<accessoires> 
<accessoire>value1</accessoire> 
<accessoire>value2</accessoire> 
<accessoire>value3</accessoire> 
</accessoires> 

現在我希望得到一個變量$ acclist其中包含由逗號分隔的所有價值觀: 值1,值2,值3,

我敢打賭,解決的辦法是很容易的,但我在已知點連最簡單的一段代碼變得麻煩。和谷歌搜索只出現在某些方式有自己的標識符的節點。

有人可以幫我嗎?

+0

[你試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+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我必須採取一個庫,能夠與SimpleXML解析和處理XML,例如更改到

$xml = '<accessoires> 
<accessoire>value1</accessoire> 
<accessoire>value2</accessoire> 
<accessoire>value3</accessoire> 
</accessoires>'; 
$dat = simplexml_load_string($xml); 
$dat = (array)$dat; 
echo implode(",",$dat["accessoire"]); 
+0

echo implode(「,」,(array)$ dat-> accessoire); 不包含任何數據。 echo implode(「,」,(array)$ dat-> accessoires-> accessoire); 只顯示我的一個值

-1

你這樣做:

implode(',', iterator_to_array($accessoires->accessoire, FALSE)); 

這裏的關鍵部分是使用iterator_to_array(),因爲SimpleXML在這裏提供了同名的子元素作爲迭代器。否則,$accessoires->accessoire只會自動魔法地給你第一個元素(如果有的話)。