2013-08-27 4 views
0

HTML-код, сгенерированный с помощью (wp_dropdown_categories) функции WordPress, и я хочу срочно преобразовать его в массив.convert html select to the array 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> 

Так что мне нужно что-то вроде этого (Key, Value)

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 regex:

$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); 

Как бы то ни было, вы действительно не должны tokenise/разбор HTML с регулярными выражениями, вместо этого используйте класс XML/DOM.

+0

Спасибо, человек столько, но массив повторяется 3 раза ** Array ([0] => Array ([0] => value = "0"> Последние сообщения [1] => значение = "1"> Без рубрики [2] => значение = "2"> Мировые новости [3] => значение = "3"> Политические [4] => значение = "4"> Экономика) [1] => Array ([0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4) [2] => Array ([0] => Последние сообщения [ 1] => Без рубрики [2] => Мировые новости [3] => Политические [4] => Экономика)) ** может помочь мне с XML/DOM ?? –

+0

Я исправил свой код и добавил ссылку на XML/DOM. – Christian