卷曲PHP-如果条件

时间:2019-01-21 02:41:45

标签: php domdocument

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/>';
}
?>

任何帮助将不胜感激。

谢谢

4 个答案:

答案 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/>' : '';