Прочитайте следующий HTML-тег с помощью переполнения стека

Это моя HTML часть кода:

<ul>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li>
<h5>Price</h5>
<span>100$</span>
</li>
</ul>

В моем php я использую PHP-простой дом для поиска тегов. Так что php часть выглядит примерно так:

    foreach($html->find("li") as $li)
{

if(strpos($li->plaintext,"<h5>Price</h5>") !== false)
{
var_dump($li->plaintext); // result: string("<h5>Price</h5><span>100$</span>")
}
}

У меня есть другая идея:

    foreach($html->find("h5") as $h5)
{

if(strpos($h5->plaintext,"Price") !== false)
{
// finding some way to read next tag
}
}

Что мне нужно ?

мне нужно получить <span> значение. Это пример, в реальном коде есть больше тэгов и несколько диапазонов в одном <li>, Но дело в том, что следующий тег содержит требуемую информацию.

0

Решение

Я не совсем уверен, сколько тегов может быть в одном <li>но я верю <span> вы ищете всегда после <h5>, Вы можете использовать метод $e->next_sibling() следующее:

foreach ($html->find('li h5') as $h5) {
$price = $h5->next_sibling();
echo $price->plaintext;
}
1

Другие решения

Итак, вы хотите получить значение определенного тега, вы можете найти DOMDocument::getElementsByTagName полезно.

Возвращаемые значения

Новый объект DOMNodeList, содержащий все совпадающие элементы.

Вот как вы бы это использовали:

$html = <<< HTML
<ul>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li> something,,,,... </li>
<li>
<h5>Price</h5>
<span>100$</span>
</li>
</ul>
HTML;

$dom = new DOMDocument;
$dom->loadXML($html);
$prices = $dom->getElementsByTagName('span');
foreach ($prices as $price) {
echo $price->nodeValue, PHP_EOL;
}

Приведенный выше пример выведет: 100$

Попробуйте и попробуйте по нескольким ценам. Это работает как исключено.

Вы также можете найти DOM документация полезно.

0

По вопросам рекламы [email protected]