Работа с phpQuery возникает ошибка при запуске foreach Invalid argument supplied for foreach()

418
08 января 2017, 19:47

Знания php у меня сырые, решил потренироваться с парсингом данных с сайта с помощью phpQuery остановился в самом начале и уже довольно продолжительное время перебираю варианты.

При запуске foreach возникает ошибка:

Warning: Invalid argument supplied for foreach() in /parser.php on line 13

про нее читал, но проблему решить не помогло. подскажите что дописать нужно, что не так делаю?

<?php
    header('Content-type: text/html; charset=utf-8');
    require 'phpQuery.php';
    $url='http://ria56.ru/posts/news/';
    $file= file_get_contents($url);
    $doc = phpQuery::newDocument($file);
    $rianews=$doc->find('.text_posts');//извлекаем только новостные посты
    $links = $doc->find('.text_posts .name a')->attr('href');
    foreach ($doc->find('.name a')->attr('href') as $link){
        echo $link.'<br>';
    }

сама библиотека подлючена, так как ссылка извлеклась с помощью

$links = $doc->find('.text_posts .name a')->attr('href');
Answer 1

Вам нужно перебирать ссылки из списка найденных, а потом брать их атрибуты. Правильный вариант будет примерно таким:

foreach ($doc->find('.name a') as $link){
    echo $link->attr('href') . '<br>';
}
Answer 2

решил проблему, оказалось что $linkявлялся объектом DOMElement, а нам нужен phpQueryObject для этого нужно было сделать следующее

foreach ($doc->find('.name a') as $link){
    $link = pq($link);
    echo $link->attr('href') . '<br>';
}

после преобразований во второй строке с переменной $link можно работать как с объектом jquery и уже писать что то вроде: $link->attr('href')

Вывод: надо было подробнее читать документацию. https://code.google.com/archive/p/phpquery/wikis/Basics.wiki

READ ALSO
Разширеный поиск в yii2

Разширеный поиск в yii2

Доброго времени суток! Есть три таблицы (house, apartment, land_parts)На сайте есть поиск (расширенный поиск так сказать)

513
php и работа с почтой Exchange

php и работа с почтой Exchange

Есть ли для php библиотека для работы с почтой Exchange? Нужно уметь читать письма, получать вложения, удаление писем - это основноеВозможность...

319
Connection refused в laravel

Connection refused в laravel

Есть система написанная на laravel52 запущенная на сервере с ubuntu(16

395
Как найти в тексте хештег

Как найти в тексте хештег

ЗдравствуйтеКак мне найти в тексте все хештеги и заменить их на ссылки? Допустим: Я #люблю плюшки заменить на Я <a href="search

509