php: Получить исходный HTML-код с помощью cURL

Как я могу получить исходный HTML-код http://www.example-webpage.com/file.html без использования file_get_contents () ?

Мне нужно знать это, потому что на некоторых веб-хостах allow_url_fopen отключен, поэтому вы не можете использовать file_get_contents () . Можно ли получить источник HTML-файла с помощью cURL (если включена поддержка cURL)? Если да, то как? html без использования file_get_contents () ?

Мне нужно знать это, потому что на некоторых веб-хостах allow_url_fopen отключен, поэтому вы не можете использовать file_get_contents () . Можно ли получить источник HTML-файла с помощью cURL (если включена поддержка cURL)? Если да, то как? html без использования file_get_contents () ?

Мне нужно знать это, потому что на некоторых веб-хостах allow_url_fopen отключен, поэтому вы не можете использовать file_get_contents () . Можно ли получить источник HTML-файла с помощью cURL (если включена поддержка cURL)? Если да, то как? Спасибо.

21
задан Czar Pino 28 May 2013 в 15:50
поделиться

3 ответа

Попробуйте следующее:

$ch = curl_init("http://www.example-webpage.com/file.html");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$content = curl_exec($ch);
curl_close($ch);

Я бы рекомендовал это только для небольших файлов. Большие файлы читаются как единое целое и могут вызвать ошибку памяти.

редактировать: после некоторого обсуждения в комментариях мы обнаружили, что проблема заключалась в том, что сервер не мог разрешить имя хоста, а страница была, кроме того, ресурсом https, поэтому здесь приходит ваше временное решение (пока ваш администратор сервера не исправит разрешение имени).

что я сделал, так это пропинговал graph.facebook.com, чтобы увидеть IP-адрес, заменил имя хоста на IP-адрес и вместо этого дал заголовок вручную. однако это делает сертификат ssl недействительным, поэтому мы должны подавить одноранговую проверку

//$url = "https://graph.facebook.com/19165649929?fields=name";
$url = "https://66.220.146.224/19165649929?fields=name";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: graph.facebook.com'));
$output = curl_exec($ch);
curl_close($ch); 

имейте в виду, что IP-адрес может измениться, и это является источником ошибки. вам также следует выполнить некоторую обработку ошибок, используя curl_error();

37
ответ дан 29 November 2019 в 20:24
поделиться

Попробуйте http://php.net/manual/en/curl.examples-basic.php :)

<?php

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

$output = curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

Как сказано в документации:

Основная идея функций cURL заключается в том, что вы инициализируете сеанс cURL с помощью curl_init(),, затем вы можете установить все свои параметры для передачи с помощью curl_setopt(), затем вы можете выполнить сеанс с помощью curl_exec (), а затем вы завершаете сеанс с помощью функции curl_close().

3
ответ дан 29 November 2019 в 20:24
поделиться
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);

Источник: http://www.christianschenk.org/blog/php-curl-allow-url-fopen/

3
ответ дан 29 November 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: