PHP Simple HTML DOM Parser, как найти нужную ссылку?

233
04 июля 2017, 20:35

Как спарсить нужную ссылку, если на странице много одинаковых классов и номер всегда разный я про [0, и т.п.], известно начало ссылки, класс. Пример:

<?php
include 'dom.php';
$html = file_get_html ('$_POST['name']);
$link = $html->find('a[class=classname href=http://site.co/]');
?>

Нужно искать по двум параметрам:

  1. класс
  2. начало ссылки

И вытащить именно ссылку, а не название, при этом я буду эту ссылку вставлять в другую переменную.

Answer 1

В выражении поиска указываете класс ссылки обычным образом a.classname, а начало ссылки проверяйте через атрибут [href^='....']

$body = <<<HTML
<div>
    <a class="link" href="http://yandex.ru">yandex</a>
    <a class="link needle" href="http://site.co">site.co</a>
    <a class="link" href="http://google.com">google</a>
    <a class="xxx" href="http://bing.com">bing</a>
</div>
HTML;

$html = str_get_html($body);
$links = $html->find("a.link[href^='http://site.co']");
foreach($links as $l){
    print_r($l->href);
}

в результате данного кода $links будет содержать массив подходящих ссылок. В данном случае это будет единственная ссылка, указывающая на site.co

Для получения первого элемента из найденных передайте индекс 0 в метод find. Сохранить значения ссылки и ее текста для дальнейшего использования вы можете с помощью свойств href и plaintext:

$lnk = $html->find("a.link[href^='http://site.co']", 0);
$url = $lnk->href;
$txt = $lnk->plaintext;
READ ALSO
Черную картинку заменять на белую при наведении

Черную картинку заменять на белую при наведении

Какие есть способы замены черного изображения на белое с помощью css при :hover?

170
Сделать Generic метод

Сделать Generic метод

Есть обобщенный класс:

316