Не могли бы вы помочь мне с правильным синтаксисом для использования, когда вы хотите проверить innerHTML / nodeValue элемента?
У меня нет проблем с именем, но возраст находится в пределах простого элемента div. Каков правильный синтаксис, используемый вместо «НЕ УВЕРЕН, ЧТО ПОЛОЖИТЬ ЗДЕСЬ» ниже.
$ html – это страница из Интернета
Имя человека находится в промежутке, таком как:
<span class="fullname">John Smith</span>
Возраст людей находится в div как:
<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); ?>
Пытаться
$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')]");