PHP preg_match_all在没有禁用选项的选项值中


PHP preg_match_all in option value without disabled options

有什么建议吗?如何使用php preg_match_all在没有禁用选项的情况下执行结果值选项?

<option value="1" disabled="disabled"> google</option>
<option value="2" selected="selected">- yahoo</option>
<option value="3">- youtube</option>
<option value="4">- facebook</option>
<option value="5" disabled="disabled"> twitter</option>
<option value="6">- tumblr</option>
<option value="7">- bing</option>

如何在没有禁用选项的情况下仅回显值(可能使用preg_match_all)?

我有一些代码,但不起作用,

   $string = array(
   '/<option value='"(.*)'" selected='"selected'">-/sU',
   '/<option value='"(.*)'">-/U',);
$option = curl_exec($ch);
foreach ($string as $key) {
 if (preg_match_all($key, $option, $matches)) {
  $count = count($matches[1]);
    for ($i=0; $i < $count ; $i++) { 
     echo $matches[1][$i]."'n";
  }
 }else {
   echo "match NOT found";
 }
}

我想要这样的结果,

value = 2,3,4,6,7

感谢您的帮助,

使用XPath很容易,请检查以下解决方案:

$doc = new DOMDocument();
$doc->loadHTML('<option value="1" disabled="disabled"> google</option><option value="2" selected="selected">- yahoo</option><option value="3">- youtube</option><option value="4">- facebook</option><option value="5" disabled="disabled"> twitter</option><option value="6">- tumblr</option><option value="7">- bing</option>');
$xpath = new DOMXPath($doc);
$notDisabledOptions = $xpath->query("//option[not(@disabled)]");
$numberOfOptions = $notDisabledOptions->length;
for($i = 0; $i < $numberOfOptions; $i++){
      echo $notDisabledOptions->item($i)->attributes->getNamedItem("value")->nodeValue;
}

有关如何使用XPath的更多信息,请参阅本XPath教程。

好吧,您可以在数组中设置选项值。然后根据你的喜好操纵这个数组。

看看这个答案,这可能与你的问题答案相同。

如何在php中获取选择框的多个选定值?

你把你的<options>中的<选择>标记,然后识别名称<select name="name">,并通过引用select name标记检索所选选项。

请告诉我它是否有帮助。