PHP 用于确定复选框是否被选中的 XPath?
PHP XPath to determine if a checkbox is checked?
在网站上它有一个复选框 HTML 代码如下:
<input type="checkbox" name="mycheckbox" id="mycheckbox" value="123" checked="checked">
如何检查复选框是否已通过 xPath
选中?我基本上只想要一个布尔值告诉我它是否被选中。不过我不确定如何获得它。
<?php
$dom = new DOMDocument();
$content = file_get_content('https://example.com');
@$dom->loadHtml($content);
// Xpath to the checkbox
$xp = new DOMXPath($dom);
$xpath = '//*[@id="mycheckbox"]'; // xPath to the checkbox
$answer = $xp->evaluate('string(' . $xpath . ')');
您对 XPath 想得太多了。 evaluate()
此处计算 XPath 字符串的结果 - 无需将其转换为要计算的 PHP 表达式。
$dom = new DOMDocument();
$content = '<html><body><input type="checkbox" name="mycheckbox" id="mycheckbox" value="123" checked="checked"></body></html>';
@$dom->loadHtml($content);
// Xpath to the checkbox
$xp = new DOMXPath($dom);
$xpath = '//*[@id="mycheckbox"]'; // xPath to the checkbox
$answer = $xp->evaluate($xpath);
// If we got an answer it'll be in a DOMNodeList, but as we're searching
// for an ID there should be only one, in the zeroth element
if ($answer->length) {
// Then we need to get the attribute list
$attr = $answer->item(0)->attributes;
// now we can check if the attribute exists and what its value is.
if ($chk = $attr->getNamedItem('checked')) {
echo $chk = $attr->getNamedItem('checked')->nodeValue; //checked
} else {
echo "No checked attribute";
}
} else {
echo "Element with specified ID not found";
}
在网站上它有一个复选框 HTML 代码如下:
<input type="checkbox" name="mycheckbox" id="mycheckbox" value="123" checked="checked">
如何检查复选框是否已通过 xPath
选中?我基本上只想要一个布尔值告诉我它是否被选中。不过我不确定如何获得它。
<?php
$dom = new DOMDocument();
$content = file_get_content('https://example.com');
@$dom->loadHtml($content);
// Xpath to the checkbox
$xp = new DOMXPath($dom);
$xpath = '//*[@id="mycheckbox"]'; // xPath to the checkbox
$answer = $xp->evaluate('string(' . $xpath . ')');
您对 XPath 想得太多了。 evaluate()
此处计算 XPath 字符串的结果 - 无需将其转换为要计算的 PHP 表达式。
$dom = new DOMDocument();
$content = '<html><body><input type="checkbox" name="mycheckbox" id="mycheckbox" value="123" checked="checked"></body></html>';
@$dom->loadHtml($content);
// Xpath to the checkbox
$xp = new DOMXPath($dom);
$xpath = '//*[@id="mycheckbox"]'; // xPath to the checkbox
$answer = $xp->evaluate($xpath);
// If we got an answer it'll be in a DOMNodeList, but as we're searching
// for an ID there should be only one, in the zeroth element
if ($answer->length) {
// Then we need to get the attribute list
$attr = $answer->item(0)->attributes;
// now we can check if the attribute exists and what its value is.
if ($chk = $attr->getNamedItem('checked')) {
echo $chk = $attr->getNamedItem('checked')->nodeValue; //checked
} else {
echo "No checked attribute";
}
} else {
echo "Element with specified ID not found";
}