PHP DOM 获取被选中的 <option> 标签

标签 php dom

因此,假设 HTML 如下所示:

<select name="some_name">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3" selected="selected">3</option>
    <option value="4">4</option>
</select>

我需要从那里提取属性 selected="selected"的选项标签。我怎样才能做到这一点?到目前为止,我有这个:
$string = file_get_contents('test.html');

include 'htmlpurifier-4.0.0-standalone/HTMLPurifier.standalone.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'XHTML 1.0 Strict');
$purifier = new HTMLPurifier($config);
$string = $purifier->purify($string);

$dom = new DOMDocument();
$dom->loadHTML('<?xml encoding="UTF-8">' . $string);
$dom->preserveWhiteSpace = false;

$num = 0;

$optionTags = $dom->getElementsByTagName('option');
foreach ($optionTags as $o) {
    if ($o->hasAttribute('selected')
        && 'selected' === $o->getAttribute('selected')) {
        $num = $o->nodeValue;
    }
}

echo $num;

这是行不通的。之后 $num 仍然等于零。

最佳答案

我相信它不起作用,因为您忘记访问 DOMNodeList的项目使用其属性 item .

试试这个方法,遍历 DOMNodeList 的整个长度回来。检查是否 DOMNode在当前项目的索引处有一个名为“selected”的属性

$num = 0;
$optionTags = $dom->getElementsByTagName('option');
for ($i = 0; $i < $optionTags->length; $i++ ) {
 if ($optionTags->item($i)->hasAttribute('selected') 
           && $optionTags->item($i)->getAttribute('selected') === "selected") {
     $num = $optionTags->item($i)->nodeValue;
 }
}

编辑:

我的确切代码:
$dom = new DOMDocument();
$dom->load("C:\\test.htm");
$num = 0;
$optionTags = $dom->getElementsByTagName('option');
for ($i = 0; $i < $optionTags->length; $i++ ) {
  if ($optionTags->item($i)->hasAttribute('selected') 
         && $optionTags->item($i)->getAttribute('selected') === "selected") {
       $num = $optionTags->item($i)->nodeValue;
  }
}
echo "Num is " . $num;

输出:

数字是 3

关于PHP DOM 获取被选中的 <option> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231231/

相关文章:

javascript - 没有点击就触发了onclick事件

php - Doctrine 2 动态查询

php - 在 laravel 模型中更改数据库连接

php - 使用变量填充 SQL 数据库的字母数字问题

java - 将 HTML 文件解析为 DOM 树以进行提取 (Java)

asp.net - 有什么简单的方法可以在 html 中应用同一区域的 "CSS Style Comparision"吗?

php - 是否可以使用 DOMDocument 查询前 5 个图像?

javascript - 如何在下拉列表中选择最后一个索引值?

php - 生成PDF文件后如何清除内容?

php - 选择标签更新另一个