Php 使用正则表达式从html select获取所选选项值

Php 使用正则表达式从html select获取所选选项值,php,regex,Php,Regex,请参阅下面的选项列表,我正在尝试获取所选选项的值 <select> <option {class='test'} value="volvo" selected='selected'>Volvo</option> <option {class='test'} value="saab">Saab</option> <option {class='test'} value="mercedes">Mercedes<

请参阅下面的选项列表,我正在尝试获取所选选项的值

<select>
  <option {class='test'} value="volvo" selected='selected'>Volvo</option>
  <option {class='test'} value="saab">Saab</option>
  <option {class='test'} value="mercedes">Mercedes</option>
  <option {class='test'}value="audi">Audi</option>
</select> 

沃尔沃汽车
萨博
梅赛德斯
奥迪
在上面的例子中,我需要得到volvo作为匹配字符串。可能有也可能没有任何类参数。 如果选项字符串是

<option {class='test'} value="volvo" selected='selected'>Volvo</option>
沃尔沃 或

沃尔沃 正则表达式应该返回volvo。 这是一个适用于所有情况的正则表达式

我试过了

preg_match_all('/<option\sclass="[^"]*"\svalue="([^"]*)">([^>]*)<\/option>/', $string, $matches);`
preg_match_all('/([^>]*)/',$string,$matches)`
但这并没有返回所选项目的值。请帮助。

试试这个:

$re = '/^.*\<option.*value=(?:\'|")([a-z]*)(?:\'|").*(?=selected=(?:\'|")selected(?:\'|")).*$/m';

$str = '<select>\n  <option {class=\'test\'} value="volvo" selected=\'selected\'>Volvo</option>\n  <option {class=\'test\'} value="saab">Saab</option>\n  <option {class=\'test\'} value="mercedes">Mercedes</option>\n  <option {class=\'test\'} value="audi">Audi</option>\n</select> '; 

preg_match_all($re, $str, $matches);

echo "<pre>";
var_dump($matches);
$re='/^.*\]*)/
为此:


/^.*\看看它是否对您有效,我会给出一个答案:没有看到您只需要所选的,所以它应该是
(.*)(value=“)([^”]*)(.*)(selected)(.*))(.*)对于
$3
为什么要用regex解析html/xml?如果

$re = '/^.*\<option.*value=(?:\'|")([a-z]*)(?:\'|").*(?=selected=(?:\'|")selected(?:\'|")).*$/m';

$str = '<select>\n  <option {class=\'test\'} value="volvo" selected=\'selected\'>Volvo</option>\n  <option {class=\'test\'} value="saab">Saab</option>\n  <option {class=\'test\'} value="mercedes">Mercedes</option>\n  <option {class=\'test\'} value="audi">Audi</option>\n</select> '; 

preg_match_all($re, $str, $matches);

echo "<pre>";
var_dump($matches);
/<option\sclass="[^"]*"\svalue="([^"]*)">([^>]*)<\/option>/
/^.*\<option.*value=(?:\'|")([a-z]*)(?:\'|").*(?=selected=(?:\'|")selected(?:\'|")).*$/m