PHP:如何使用正则表达式将此字符串转换为关联?

时间:2011-12-11 08:06:03

标签: php regex

我有很多像这样的字符串(HTML)。长选择/选项标签,如下所示。

<option value="93">Afghanistan (93)</option>
<option value="355">Albania (355)</option>
<option value="213">Algeria (213)</option>
<option value="376">Andorra (376)</option>
<option value="244">Angola (244)</option>
<option value="264">Anguilla (264)</option>

我打算将其转换为PHP数组,如

array("93"=>"Afghanistan (93)","355"=>"Albania (355)","213"=>"Algeria (213)", ...)

我从未在PHP中使用过RegEx,因此不知道如何处理这个问题。我应该使用哪些代码/函数来转换这些数据?

2 个答案:

答案 0 :(得分:1)

这是一个基本的正则表达式问题。

preg_match_all("#\"(\d+)\">((\w+) \(\d+\))<#", $data, $m);
$result = array_combine($m[1], $m[2]);

但我认为你需要

preg_match_all("#(\d+)\">(\w+)#", $data, $m);
$result = array_combine($m[1], $m[2]);

答案 1 :(得分:1)

使用:

preg_match_all('/<option value="([0-9]+)">(.*?)<\/option>/is', $data, $matches);

$result=array();
foreach($matches[1] as $key=>$value){
    $result[$value]=$matches[2][$key];
}
var_dump($result);

我建议您使用DomDocument类进行此类工作。 http://www.php.net/manual/fr/class.domdocument.php