Chcę pobrać kod HTML linku (strony internetowej) w PHP. Na przykład, jeśli link to
następnie chcę kod HTML wyświetlanej strony. Chcę pobrać ten kod HTML i zapisać go w zmiennej PHP.
Jak mogę to zrobić?
Chcę pobrać kod HTML linku (strony internetowej) w PHP. Na przykład, jeśli link to
następnie chcę kod HTML wyświetlanej strony. Chcę pobrać ten kod HTML i zapisać go w zmiennej PHP.
Jak mogę to zrobić?
Odpowiedzi:
Jeśli twój serwer PHP zezwala na otoki url fopen, najprostszym sposobem jest:
$html = file_get_contents('/programming/ask');
Jeśli potrzebujesz większej kontroli, powinieneś przyjrzeć się funkcjom cURL :
$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);
źródło
Jeśli chcesz jakoś manipulować pobraną stroną, możesz spróbować parsera PHP DOM. Uważam, że PHP Simple HTML DOM Parser jest bardzo łatwy w użyciu.
źródło
Możesz chcieć sprawdzić biblioteki YQL z Yahoo: http://developer.yahoo.com/yql
Zadanie do wykonania jest tak proste, jak
select * from html where url = 'http://stackoverflow.com/questions/ask'
Możesz to wypróbować w konsoli pod adresem : http://developer.yahoo.com/yql/console (wymaga zalogowania)
Zobacz także screencast Chrisa Heilmanna, aby zobaczyć kilka fajnych pomysłów, co jeszcze możesz zrobić: http://developer.yahoo.net/blogs/theater/archives/2009/04/screencast_collating_distributed_information.html
źródło
Prosty sposób: Użyj
file_get_contents()
:$page = file_get_contents('http://stackoverflow.com/questions/ask');
Pamiętaj, że
allow_url_fopen
musisz byćtrue
w tobie,php.ini
aby móc używać opakowań fopen obsługujących adresy URL.Bardziej zaawansowany sposób: jeśli nie możesz zmienić konfiguracji PHP,
allow_url_fopen
jest tofalse
ustawienie domyślne i jeśli zainstalowane jest rozszerzenie / curl, użyjcURL
biblioteki, aby połączyć się z żądaną stroną.źródło
możesz użyć file_get_contents, jeśli chcesz przechowywać źródło jako zmienną, jednak curl jest lepszą praktyką.
$url = file_get_contents('http://example.com'); echo $url;
to rozwiązanie spowoduje wyświetlenie strony internetowej w Twojej witrynie. Jednak lokowanie jest lepszą opcją.
źródło
spójrz na tę funkcję:
http://ru.php.net/manual/en/function.file-get-contents.php
źródło
include_once('simple_html_dom.php'); $url="http://stackoverflow.com/questions/ask"; $html = file_get_html($url);
Możesz pobrać cały kod HTML jako tablicę (formę przeanalizowaną) za pomocą tego kodu Pobierz plik „simple_html_dom.php” tutaj http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download
źródło
Oto dwa różne, proste sposoby pobierania treści z adresu URL :
1) pierwsza metoda
Włącz Allow_url_include na swoim hostingu (php.ini lub gdzieś)
<?php $variableee = readfile("http://example.com/"); echo $variableee; ?>
lub
2) druga metoda
Włącz php_curl, php_imap i php_openssl
<?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; ?>
źródło
możesz użyć metody DomDocument, aby uzyskać również indywidualną zmienną poziomu znacznika HTML
$homepage = file_get_contents('https://www.example.com/'); $doc = new DOMDocument; $doc->loadHTML($homepage); $titles = $doc->getElementsByTagName('h3'); echo $titles->item(0)->nodeValue;
źródło
$output = file("http://www.example.com");
nie działa, dopóki nie włączone:allow_url_fopen, allow_url_include,
afile_uploads
pophp.ini
za PHP7źródło
Wypróbowałem ten kod i działa dla mnie.
$html = file_get_contents('www.google.com'); $myVar = htmlspecialchars($html, ENT_QUOTES); echo($myVar);
źródło