парсинг сайта avito.ru

пробую распарсить вакансии с сайта. В исходниках нашел такую ссылку.

<a class="snippet-link"
 itemprop="url"
 href="/hanty-mansiysk/vakansii/prodavets_neprodovolstvennyh_tovarov_1878831314"
 target="_blank"
 title="Продавец непродовольственных товаров в Ханты-Мансийске">
 Продавец непродовольственных товаров
 </a>

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

function debug ( $str ) {
        echo "<pre>";
        var_dump ( $str );
        echo "</pre>";
}
$data = file_get_contents ( 'https://www.avito.ru/hanty-mansiysk/rabota?cd=1' );
preg_match ( '%<a class="snippet-link".*>(.*)</a>%u', $data, $out );
debug ( $out );

Выводит пустой массив. но почему, как правильно надо регулярку составить?


Ответы (1 шт):

Автор решения: Эдуард

Добавьте в шаблон модификатор "s" (простая строка), это позволит игнорировать переводы строк:

$data = '<a class="snippet-link"
 itemprop="url"
 href="/hanty-mansiysk/vakansii/prodavets_neprodovolstvennyh_tovarov_1878831314"
 target="_blank"
 title="Продавец непродовольственных товаров в Ханты-Мансийске">
 Продавец непродовольственных товаров
 </a>';

$out = '';
$patt = '~<a class="snippet-link"[^>]*>\s*(.*?)\s*</a>~s';
! preg_match ($patt, $data, $out) ?: $out = $out[1];

echo $out; // Продавец непродовольственных товаров

См. демо

→ Ссылка