我有很多像这样的字符串(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,因此不知道如何处理这个问题。我应该使用哪些代码/函数来转换这些数据?
答案 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