Curl php - если условие - PullRequest
       13

Curl php - если условие

0 голосов
/ 21 января 2019

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>

Мой код ниже работает нормально, но покажите мне все «data-price» с TagName «option». Я хотел бы получить только одну указанную цену. Поэтому я хотел бы добавить что-то вроде этого:

<?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 голосов
/ 21 января 2019

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");

для извлечения его на основе частичного текстового содержимого (это приведет к извлечению любого элемента option, который имеет Text 2 в любом месте своего textContent.)

0 голосов
/ 21 января 2019

Просто добавьте условие ниже в вашем коде.

 <?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/>';
       }
    }
    ?>
0 голосов
/ 21 января 2019

Вы можете попробовать:

 echo $optionNode->getAttribute('data-price') == "text 2" ? $optionNode->getAttribute('data-price') . '<br/>' : '';
0 голосов
/ 21 января 2019
if ($optionNode->getAttribute('data-name') == "text 2") {
    echo $optionNode->getAttribute('data-price') . '<br/>';
}
...