2013-08-27 33 views
0

通過使用(wp_dropdown_categories)生成的HTML選擇代碼WordPress的功能,我想將其轉換成一個數組迫切。HTML轉換選擇到一個數組的PHP

<select name="selectname1" id="selectId1" class="postform"> 
<option value="0">Recent Posts</option> 
<option class="level-0" value="1">Uncategorized</option> 
<option class="level-0" value="2">World News</option> 
<option class="level-1" value="3">&nbsp;&nbsp;&nbsp;Political</option> 

,所以我需要有類似的東西(鍵,值)

Array('Recent Posts' => '0', 
'Uncategorized' = > '1', 
'World News' = > '2', 
'&nbsp;&nbsp;&nbsp;Political' = > '3' 
); 
+0

如果只有4項,何不乾脆做手工? – techfoobar

+0

那麼你解析html,還是你有權訪問'wp_dropdown_cats'? –

+0

它是一個動態列表,可以有百餘項 –

回答

0

試試這個:

$list = explode('</option>', $s); 
foreach ($list as $v) 
    $result[] = strip_tags($v); 
1

既然你快想的那樣,這裏是一個快速-n-dirty正則表達式解決方案:

$matches = null; 
$result = array(); 

if(preg_match_all('/value="(.*)".*?>(.*)<\\/option>/', $s, $result)){ 
    $matches = array_pop($matches); 
    foreach($matches[1] as $i => $key){ 
     $key = html_entity_decode($key); 
     $val = html_entity_decode($matches[2][$i]); 
     $result[$key] = $val; 
    } 
} 

print_r($result); 

但是,你真的不應該用正則表達式來標記/解析HTML,而應該使用XML/DOM類。

+0

感謝的人那麼多,但在陣列重複3次 **陣列([0] =>數組([0] =>值= 「0」>最近的帖子[1] => value =「1」> Uncategorized [2] => value =「2」> World News [3] => value =「3」> Political [4] => value =「4」> Economy) =>數組([0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4)[2] => 1] =>未分類[2] =>世界新聞[3] =>政治[4] =>經濟))** 可以幫我使用XML/DOM? –

+0

我修復了我的代碼並添加了對XML/DOM的引用。 – Christian