Как я могу получить исходный код html http://www.example-webpage.com/file.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);
Я бы рекомендовал это только для небольших файлов. Большие файлы читаются в целом и могут вызвать ошибку памяти.
edit: после некоторого обсуждения в комментариях мы выяснили, что проблема в том, что servercouldnt разрешает имя хоста, а страница дополнительно содержит https-ресурс, поэтому сюда приходит ваше временное решение (до тех пор, пока ваш serveradmin не исправляет разрешение имен).
то, что я сделал, просто pinging 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-адрес может измениться, и это источник eror. вы должны также выполнять некоторую обработку ошибок с помощью curl_error ();
$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/
Попробуйте 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 () .