Получить url с помощью $string=file_get_contents

241
10 апреля 2017, 07:56

Помогите, пожалуйста, дописать в функцию вывод адреса, того что в <a></a>.
Т.е. url адрес и текст ссылки.

<?
$string=file_get_contents("https://сайт.ру/iframe.php");
preg_match_all("/<h2?.*>(.*)<\/h2>/", $string, $matches);
foreach ($matches[1] as $h) print($h."<br/>"); 
?>

Сейчас получаю только содержимое <h2></h2>

Answer 1

Парсить нерегулярные структуры(html) регулярными выражениями - плохая идея.
Для разбора DOM есть специализированные встроенные средства.

$html = file_get_contents("https://example.ru/iframe.php");
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $link) {
  echo $link->nodeValue.': '.$link->getAttribute("href")."<br/>\n";
}

Fiddle.org

Для игнора ошибок в HTML можно воспользоваться этой конструкцией:

$internalErrors = libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_use_internal_errors($internalErrors);

Для поиска текста заголовка в ссылке:

echo $link->getElementsByTagName('h2')[0]->nodeValue.': '.$link->getAttribute("href")."<br/>\n";  
READ ALSO
Получить данные из jsona

Получить данные из jsona

Почему не выводится результат метода getTitle()?

221
Какой кодировщик php выбрать?

Какой кодировщик php выбрать?

Возникла мысль защитить свои скриптыДавно покупал IonCube за 200$, сейчас цена та же

246
Как сохранить значение select при обновлении страницы?

Как сохранить значение select при обновлении страницы?

Собственно, сабжПри релоаде страницы значение select не сохраняется, 7-ой час уже пытаюсь сделать, но, как видно, без толку

248
Где меняется $items?

Где меняется $items?

Почему массив $items после обработки в цикле добавляет к своим элементам subcategories я же работаю с масcивом $pointers?

211