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')]");
Другие вопросы по тегам