Как получить HTML-код веб-страницы в PHP?

Я хочу получить HTML-код ссылки (веб-страницы) в PHP. Например, если ссылка

https://stackoverflow.com/questions/ask

то я хочу, чтобы HTML-код страницы был подан. Я хочу получить этот код HTML и сохранить его в переменной PHP.

Как я могу это сделать?

Если ваш PHP-сервер разрешает обертку url fopen, тогда самый простой способ:

$html = file_get_contents('http://stackoverflow.com/questions/ask'); 

Если вам нужно больше контроля, вы должны посмотреть на функции cURL :

 $c = curl_init('http://stackoverflow.com/questions/ask'); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); //curl_setopt(... other options you want...) $html = curl_exec($c); if (curl_error($c)) die(curl_error($c)); // Get the status code $status = curl_getinfo($c, CURLINFO_HTTP_CODE); curl_close($c); 

Кроме того, если вы хотите каким-либо образом манипулировать извлеченной страницей, вам может понадобиться попробовать парсер php DOM. Я нахожу PHP Simple HTML DOM Parser очень простым в использовании.

Вы можете проверить библиотеки YQL от Yahoo: http://developer.yahoo.com/yql

Задача под рукой так же проста, как и

 select * from html where url = 'http://stackoverflow.com/questions/ask' 

Вы можете попробовать это на консоли: http://developer.yahoo.com/yql/console (требуется вход в систему)

Также см. Chris Heilmanns screencast для некоторых хороших идей, что еще вы можете сделать: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html

Простой способ: используйте file_get_contents() :

 $page = file_get_contents('http://stackoverflow.com/questions/ask'); 

Обратите внимание, что allow_url_fopen должен быть true в php.ini чтобы иметь возможность использовать обертки fopen с поддержкой URL.

Более продвинутый способ. Если вы не можете изменить свою конфигурацию PHP, allow_url_fopen по умолчанию false , и если ext / curl установлен, используйте библиотеку cURL для подключения к желаемой странице.

посмотрите на эту функцию:

http://ru.php.net/manual/en/function.file-get-contents.php

 include_once('simple_html_dom.php'); $url="http://stackoverflow.com/questions/ask"; $html = file_get_html($url); 

Вы можете получить весь HTML-код в виде массива (проанализированная форма), используя этот код. Загрузите файл 'simple_html_dom.php' здесь http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

вы можете использовать file_get_contents, если вы хотите сохранить источник как переменную, однако завиток лучше.

 $url = file_get_contents('http://example.com'); echo $url; 

это решение отобразит веб-страницу на вашем сайте. Однако завиток – лучший вариант.

Вот два разных простых способа получить контент из URL :

1) первый метод

Включите Allow_url_include с вашего хостинга (php.ini или где-нибудь)

 <?php $variableee = readfile("http://example.com/"); echo $variableee; ?> 

или

2) второй метод

Включить php_curl, php_imap и php_openssl

 <?php // you can add anoother curl options too // see here - http://php.net/manual/en/function.curl-setopt.php function get_dataa($url) { $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $data = curl_exec($ch); curl_close($ch); return $data; } $variableee = get_dataa('http://example.com'); echo $variableee; ?>