PHP: Получить исходный код HTML с CURL - PullRequest
20 голосов
/ 29 августа 2010

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

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

Ответы [ 4 ]

33 голосов
/ 29 августа 2010

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

$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);

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

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

я просто пинговал 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 ();

3 голосов
/ 29 августа 2010

Попробуйте 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 августа 2010
$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/

1 голос
/ 11 февраля 2018

Я нашел инструмент в Github, который мог бы решить этот вопрос.https://incarnate.github.io/curl-to-php/ Надеюсь, что будет полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...