Я хочу отримати HTML-код посилання (веб-сторінки) у PHP. Наприклад, якщо посилання є
тоді я хочу HTML-код сторінки, яка обслуговується. Я хочу отримати цей HTML-код і зберегти його у змінній PHP.
Як я можу це зробити?
Я хочу отримати HTML-код посилання (веб-сторінки) у PHP. Наприклад, якщо посилання є
тоді я хочу HTML-код сторінки, яка обслуговується. Я хочу отримати цей HTML-код і зберегти його у змінній PHP.
Як я можу це зробити?
Відповіді:
Якщо ваш PHP-сервер дозволяє обгортки url fopen, то найпростіший спосіб:
$html = file_get_contents('/programming/ask');
Якщо вам потрібен більше контролю, тоді вам слід розглянути функції cURL :
$c = curl_init('/programming/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 (потрібен вхід)
Також перегляньте скринкаст Кріса Хайльманна, щоб побачити кілька приємних ідей, що ще можна зробити: 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бібліотеку для підключення до потрібної сторінки.
подивіться на цю функцію:
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
Ось два різні, прості способи отримання вмісту з 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;
?>
Ви можете використовувати метод DomDocument, щоб отримати окрему змінну рівня тегу HTML теж
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;
Я спробував цей код, і він працює на мене.
$html = file_get_contents('www.google.com');
$myVar = htmlspecialchars($html, ENT_QUOTES);
echo($myVar);