Я хочу искать html файл или текст для якоря, у которого есть "друг" в его ссылке. То есть: zack - твой друг
Затем, когда он соответствует якорю, он должен вернуть атрибут href и привязку (ссылку). Я пробовал поиск по Google, но до сих пор я не могу понять domXpath, а другие примеры - только поиск атрибута href. Мне нужен код для архивирования.
Xpath может это сделать. Выражение xpath может содержать условия для узлов. Поэтому давайте начнем выбирать все элементы в любом месте документа:
//a
Теперь, внутри условия, выберем все подноды (элемент и текст) с помощью node()
, примените их к string()
, проверьте, contains()
ли эта строка contains()
подстроку "friend",
//a[contains(string(node()), "friend")]
Итерации по узлам и чтение данных из них.
$html = <<<'HTML'
<a href="foo.html">zack is your friend</a>
HTML;
$dom = new DOMDocument;
$dom->loadHtml($html);
$xpath = new DOMXpath($dom);
$nodes = $xpath->evaluate('//a[contains(string(node()), "friend")]');
foreach ($nodes as $node) {
var_dump(
array(
'href' => $node->getAttribute('href'),
'text' => $node->textContent
)
);
}