1

使用(wp_dropdown_categories)WordPress函数生成的html选择代码,我想紧急将其转换为数组。

<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'
);
4

2 回答 2

1

既然你想要它很快,这里有一个 quick-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 类。

于 2013-08-27T06:22:07.930 回答
1

尝试这个:

$list = explode('</option>', $s);
foreach ($list as $v)
  $result[] = strip_tags($v);
于 2013-08-27T06:15:44.523 回答