Использование domXpath для поиска якоря

0

Я хочу искать html файл или текст для якоря, у которого есть "друг" в его ссылке. То есть: zack - твой друг

Затем, когда он соответствует якорю, он должен вернуть атрибут href и привязку (ссылку). Я пробовал поиск по Google, но до сих пор я не могу понять domXpath, а другие примеры - только поиск атрибута href. Мне нужен код для архивирования.

Теги:
dom

1 ответ

0

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
    )
  );
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню