2011-03-01 47 views
0

我使用wordpress創建一個曲棍球網站。我用wp_nav_menu得到HTML這樣有曲棍球運動員和IM自定義菜單:此相呼應到頁面之前如何將列表數據轉換爲表格在php

<ul id="example-menu"> 
<li><a href="/example/">[3] [DeBlois] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
<li><a href="/example/">[35] [Baldino] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
<li><a href="/example/">[2] [Esch] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
</ul> 

,我想將它分解成一個數組,並把它重新走到一起在一個表中,以便各列很好地排列起來。我還需要用圖形替換[USA]部分,一旦列表進入陣列,這將很容易完成。

什麼是通過這種類型的HTML解析的最佳方式是什麼?我可以在WP中使用不同的功能嗎?

+1

它從哪兒得到的返回?或者你在刮另一個網站?理想情況下,您將在返回HTML之前構建數組。 – dmcnelis 2011-03-01 14:03:29

回答

0

如果你是從另一個網站按照dmcnelis建議的方式進行的,你可以在']'字符上使用PHP's Dom getElementById然後exploding的組合來查找,同時剝離'['。

0

您可以用

'<li>' 
()來獲得行(忽略第一個),並遍歷他們

和strip_tags的爆炸,與

'] [' 

爆炸得到的cols。

2
<?php 

$html = '<ul id="example-menu"> 
<li><a href="/example/">[3] [DeBlois] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
<li><a href="/example/">[35] [Baldino] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
<li><a href="/example/">[2] [Esch] [USA] [20 yr] [5’11] [185 lbs]</a></li> 
</ul>'; 


$doc = new DOMDocument(); 
@$doc->loadHTMl($html); 
$link_array = $doc->getElementsByTagName('a'); 


$result = array(); 

foreach($link_array as $element) 
{ 
    $value = $element->nodeValue; 
    $value = str_replace('[','',$value); 
    $value = str_replace(']','',$value); 

    $row = explode(" ",$value); 

    $result[] = $row; 
    unset($row); 
} 

echo "<pre>"; 
print_r($result); 
echo "</pre>"; 
?> 

輸出

Array 
(
    [0] => Array 
     (
      [0] => 3 
      [1] => DeBlois 
      [2] => USA 
      [3] => 20 
      [4] => yr 
      [5] => 5’11 
      [6] => 185 
      [7] => lbs 
     ) 

    [1] => Array 
     (
      [0] => 35 
      [1] => Baldino 
      [2] => USA 
      [3] => 20 
      [4] => yr 
      [5] => 5’11 
      [6] => 185 
      [7] => lbs 
     ) 

    [2] => Array 
     (
      [0] => 2 
      [1] => Esch 
      [2] => USA 
      [3] => 20 
      [4] => yr 
      [5] => 5’11 
      [6] => 185 
      [7] => lbs 
     ) 

) 
+0

對不起,我應該說過。我正在使用wordpress在網站上創建一個自定義菜單。他們需要更多關於鏈接的技術信息,而不是通過界面輕鬆創建,同時仍然允許客戶端管理更新......因此,在我的菜單項標題中,我添加了[]的操作方式,使其更易於操作。我也沒有看到從wp_nav_menu()獲取原始菜單項的函數; – drrobotnik 2011-03-01 14:35:09

+0

我不明白你的意思。你不想刪除[]。如果是這樣,請刪除我在str_replace處執行的行。我不明白你的意思是更多的技術信息 – 2011-03-01 14:58:51