Это моя 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>
, Но дело в том, что следующий тег содержит требуемую информацию.
Я не совсем уверен, сколько тегов может быть в одном <li>
но я верю <span>
вы ищете всегда после <h5>
, Вы можете использовать метод $e->next_sibling()
следующее:
foreach ($html->find('li h5') as $h5) {
$price = $h5->next_sibling();
echo $price->plaintext;
}
Итак, вы хотите получить значение определенного тега, вы можете найти 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 документация полезно.