внутренняя TAG php DOM (simple_html_dom) - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть этот HTML: <h2><a href="http://.... > title</h2> Как я могу получить строку "href"?

Я пытался с:

include('simple_html_dom.php');
$html = file_get_html('http://...');

foreach($html->find('h2')->find('a') as $k) {
echo $k->href . '<br>';
}

ошибка: вызов функции-члена find () для необъекта

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Вместо двух ->find() вызовов попробуйте

foreach($html->find('h2 > a') as $k) {

Я сам не использовал Simple DOM, поэтому не уверен, работают ли селекторы или нет.Если нет, попробуйте

foreach($html->find('a') as $k) {

и отсортируйте результаты.

0 голосов
/ 31 декабря 2011

Я не использовал PHP Simple HTML DOM Parser ... но я думаю, что ошибка может быть в том, что он возвращает вам строку, и вы применяете функцию find к той возвращенной строке, которая ожидает передачи html-объекта .. .

Предыдущее решение неверно, потому что он только что искал строку, а функция поиска ищет тег ..

Одним из возможных способов является то, что я прокомментировал .. удалить первый 'h2' найти creteria и подать заявку на все 'a', что

foreach($html->find('a') as $k) {
echo $k->href . '<br>';
}    

Другое возможное решение - использовать php inbuild file_get_contents и регулярно искать выражения ... я сделал это для вас ...

$html = file_get_contents('new.php');
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
$uql=array();
preg_match($reg_exUrl, $html, $url);

print_r($url);
...