PHP-запрос DOMXPath с использованием innerHTML/nodeValue элемента для поиска и возврата элемента
Можете ли вы помочь мне с правильным синтаксисом, чтобы использовать, когда вы хотите проверить innerHTML/nodeValue элемента?
У меня нет проблем с Именем, однако Age находится внутри простого элемента div. Какой правильный синтаксис использовать вместо "НЕ УВЕРЕН, ЧТО СДЕЛАТЬ ЗДЕСЬ" ниже.
$ html - это страница из интернета
Имя человека в промежутке как:
<span class="fullname">John Smith</span>
Возраст людей в делении как:
<div>Age: 28</div>
У меня есть следующий PHP:
<?php
$dom = new DomDocument();
@$dom->loadHTML($html);
$finder = new DOMXPath($dom);
//Full Name
$findName = "fullname";
$queryName = $finder->query("//span[contains(@class, '$findName')]");
$name = $queryName->item(0)->nodeValue;
//Age
$findAge = "Age: ";
$queryAge = $finder->query("//div[NOT SURE WHAT TO PUT HERE]");
$age = substr($queryAge->item(0)->nodeValue, 5);
?>
1 ответ
Решение
Пытаться
$queryAge = $finder->query("//div[starts-with(., '$findAge')]");
Я имел ограниченный успех с starts-with()
из-за пробелов, поэтому вам, возможно, придется прибегнуть к
$queryAge = $finder->query("//div[contains(., '$findAge')]");
Если есть шанс найти ложные срабатывания (т. Е. Другие div с "Age: " в них), вы можете избежать этого, используя более конкретный путь (если известен), т.е.
$queryAge = $finder->query("//div[@id='something']//div[contains(., '$findAge')]");