PHP'deki bir bağlantının (web sayfasının) HTML kodunu almak istiyorum. Örneğin, bağlantı
daha sonra sunulan sayfanın HTML kodunu istiyorum. Bu HTML kodunu almak ve bir PHP değişkeninde saklamak istiyorum.
Bunu nasıl yapabilirim?
PHP'deki bir bağlantının (web sayfasının) HTML kodunu almak istiyorum. Örneğin, bağlantı
daha sonra sunulan sayfanın HTML kodunu istiyorum. Bu HTML kodunu almak ve bir PHP değişkeninde saklamak istiyorum.
Bunu nasıl yapabilirim?
Yanıtlar:
PHP sunucunuz url fopen sarmalayıcılara izin veriyorsa, en basit yol şudur:
$html = file_get_contents('/programming/ask');
Daha fazla kontrole ihtiyacınız varsa cURL işlevlerine bakmalısınız :
$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);
Ayrıca, alınan sayfayı bir şekilde değiştirmek istiyorsanız, bazı php DOM ayrıştırıcılarını denemek isteyebilirsiniz. PHP Simple HTML DOM Parser'ın kullanımını çok kolay buluyorum .
Yahoo'daki YQL kitaplıklarına göz atmak isteyebilirsiniz: http://developer.yahoo.com/yql
Eldeki görev kadar basit
select * from html where url = 'http://stackoverflow.com/questions/ask'
Bunu şu adresteki konsolda deneyebilirsiniz: http://developer.yahoo.com/yql/console (oturum açma gerektirir)
Daha fazlasını yapabileceğiniz bazı güzel fikirler için Chris Heilmann'ın ekran video kaydına da bakın: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
Basit yol: Kullanım file_get_contents():
$page = file_get_contents('http://stackoverflow.com/questions/ask');
Lütfen URL uyumlu fopen sarmalayıcıları kullanabilmeniz için sizin içinde olmanız allow_url_fopengerektiğini unutmayın .truephp.ini
Daha gelişmiş yol: Eğer PHP yapılandırmasını değiştiremiyorsanız, allow_url_fopenolduğu falsevarsayılan olarak ve ext / bukle yüklüyse, kullanmak cURLkütüphane istenen sayfaya bağlanmak için.
kaynağı bir değişken olarak saklamak istiyorsanız file_get_contents kullanabilirsiniz, ancak curl daha pratiktir.
$url = file_get_contents('http://example.com');
echo $url;
bu çözüm, web sayfasını sitenizde gösterecektir. Ancak kıvrılma daha iyi bir seçenektir.
şu işleve bakın:
include_once('simple_html_dom.php');
$url="http://stackoverflow.com/questions/ask";
$html = file_get_html($url);
Bu kodu kullanarak HTML kodunun tamamını bir dizi (ayrıştırılmış form) olarak alabilirsiniz. 'Simple_html_dom.php' dosyasını buradan indirin http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
URL'den içerik almanın iki farklı, basit yolu :
1) ilk yöntem
Allow_url_include'u barındırmanızdan etkinleştirin (php.ini veya başka bir yer)
<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?>
veya
2) ikinci yöntem
Php_curl, php_imap ve php_openssl'yi etkinleştirin
<?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;
?>
tek bir HTML etiketi düzeyi değişkeni almak için DomDocument yöntemini de kullanabilirsiniz
$homepage = file_get_contents('https://www.example.com/');
$doc = new DOMDocument;
$doc->loadHTML($homepage);
$titles = $doc->getElementsByTagName('h3');
echo $titles->item(0)->nodeValue;
Bu kodu denedim ve benim için çalışıyor.
$html = file_get_contents('www.google.com');
$myVar = htmlspecialchars($html, ENT_QUOTES);
echo($myVar);