Как я могу получить исходный 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)? Если да, то как?
Спасибо.
Попробуйте следующее:
$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();
Попробуйте 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().
$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/