HTML
<select id="myid">
<option value="1" data-name="text 1" data-price="5">Text 1</option>
<option value="2" data-name="text 2" data-price="10">Text 2</option>
</select>
我下面的代码工作正常,但向我展示了带有TagName“选项”的所有“数据价格”。我只想拿一个标价。所以我想添加如下内容:
<?php
$doc = new DOMDocument();
@$doc->loadHTMLFile('https://example.com');
$optionNodes = $doc->getElementById('myid')->getElementsByTagName('option');
foreach($optionNodes as $optionNode) {
// if $optionNode->getAttribute('data-name') = "text 2"
echo $optionNode->getAttribute('data-price') . '<br/>';
}
?>
任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
救援的XPath。
<?php
$doc = new DOMDocument();
@$doc->loadHTMLFile('https://example.com');
$xp=new DOMXPath($doc);
echo $xp->query("//option[@value='2']")->item(0)->getAttribute("data-price");
value="2"
的第一个元素,并获取其data-price
属性。您也可以这样做
echo $xp->query("//option[@data-name='text 2']")->item(0)->getAttribute("data-price");
通过data-name
进行获取,或者甚至可以
echo $xp->query("//option[text()='Text 2']")->item(0)->getAttribute("data-price");
根据文字内容获取,甚至
echo $xp->query("//option[contains(text(),'Text 2')]")->item(0)->getAttribute("data-price");
根据部分文本内容来获取它(这将获取在textContent中任何位置有option
的任何Text 2
元素。)
答案 1 :(得分:0)
if ($optionNode->getAttribute('data-name') == "text 2") {
echo $optionNode->getAttribute('data-price') . '<br/>';
}
答案 2 :(得分:0)
只需在代码中添加以下条件即可。
<?php
$doc = new DOMDocument();
@$doc->loadHTMLFile('https://example.com');
$optionNodes = $doc->getElementById('myid')->getElementsByTagName('option');
foreach($optionNodes as $optionNode) {
if($optionNode->getAttribute('data-price') == "10"){
echo $optionNode->getAttribute('data-price') . '<br/>';
}
}
?>
答案 3 :(得分:0)
您可以尝试:
echo $optionNode->getAttribute('data-price') == "text 2" ? $optionNode->getAttribute('data-price') . '<br/>' : '';