我試圖將節點值保存到數組中。這是XML結構:將XML節點和子節點值設置爲數組PHP
<wildcards>
<conference id="1">
<seeds>
<seed divId="1">10,7,17</seed>
<seed divId="2">8,5,3</seed>
</seeds>
<wild>2,4</wild>
<elimination>11,6,14,1,13,12,20,15</elimination>
</conference>
</wildcards>
The xml file can be found here
我想會議1的節點值與陣列關鍵是他們在積分榜上的通配符什麼地方聯繫起來。這裏是我的代碼:
$xmlDoc = new DOMDocument();
$xmlDoc->load('http://www.tsn.ca/datafiles/XML/NHL/standings.xml');
$searchNode = $xmlDoc->getElementsByTagName('wildcards');
foreach ($searchNode as $node) {
$conference1 = $node->getElementsByTagName('conference');
$conference1 = $conference1->item(0)->nodeValue;
}
echo $conference1;
// $conference1 = str_replace(" ",",",$conference1);
$conference1Array = explode(',', $conference1);
$conference1ArrayLength = count($conference1Array) ;
for ($i = 1; $i < $conference1ArrayLength; $i++) {
echo $i.": ".$conference1Array[$i-1];
echo "<br/>";
}
If you go to this website,你可以看到我的電流輸出。我嘗試將字符串替換爲空白,並在','上爆炸以獲得正確的數組,但它不起作用。
conference1的輸出爲:10,7,17 8,5,3 2,4 11,6,14,1,13,12,20,15
。即使有空白,替換也不起作用。
我需要在17,3和4之後加逗號。這個想法是將團隊ID的密鑰插入我的數據庫中名爲seed
的列中。然後,我可以使用PHP來確定哪些數字與表格輸出的每個分區/通配符關聯。這裏是我的意思是通過關鍵字和團隊ID /節點值的關聯:
團隊標識:10 - > 1(第一部分)
團隊標識:7 - > 2(第一分部)
團隊ID:17 - > 3(第三除法1)
團隊ID:8 - > 4(在分裂第一2)
團隊ID:5 - > 5(第2在第2部)
團隊ID: 3 - > 6(在分裂第三3)
團隊ID:2 - > 7(通配符1)
團隊ID:4 - > 8(通配符2)
團隊ID:所有其餘(消除)
我嘗試使用code from this link分別獲取節點值,但我無法弄清楚如何使它適用於我的情況。順便說一下,我再也沒有嘗試過的代碼。
編輯:我已經看過提供的鏈接,並都拿出了這一點:
$searchNode = $xmlDoc->getElementsByTagName('wildcards');
$divData = array();
foreach($searchNode as $node){
foreach($node->childNodes as $child) {
foreach($child->childNodes as $secondChild) {
foreach($secondChild->childNodes as $thirdChild) {
$divData[] = array($thirdChild->nodeName => $thirdChild->nodeValue);
}
}
}
}
對不起,那是行不通的。我的帖子明確指出了這一點(我甚至將這行代碼註釋掉了)。我也用'trim'試過了。我猜測白色空間不被識別,因爲在諸如17和8之間的數字之間,節點發生了變化。 –
用'trim'這是輸出'10,7,17 ,,,,,,,,,,,, 8,5,3 ,,,,,,,,, ,,,,,,,,, 2,4 ,,,,,,,,, 11,6,14,1,13,12,20,15' –
嘗試正則表達式。查看我的更新回答 – Jason