Avatar billede fluii Nybegynder
22. oktober 2004 - 14:58 Der er 4 kommentarer og
2 løsninger

Grap og behandle en anden side i PHP

Hvordan kan man få en side's source ind i en php til behandling?
I ASP kan man gøre følgende:
--
    strUrl = "http://www.jubii.dk"
    dim xmlHttp, strContent
    set xmlHttp = createobject("microsoft.xmlhttp")
 
    on error resume next
    xmlHttp.open "GET", strUrl, false
    xmlHttp.send
    strContent = xmlHttp.responseText
--
og efterfølgende behandle sidens source "strContent"

Men hvordan gøres dette i PHP - Min server understøtter nemlig ikke ASP (men scriptet virker fint på anden asp-server)
Avatar billede jakobsynder Nybegynder
22. oktober 2004 - 15:39 #1
Du kan åbne en socket, sende og modtage data, og lukke den igen med følgende funktioner:
fsockopen()
fputs()
fgets()
fclose()

- eller, noget nemmere, kan du bare gøre følgende:

$content = file_get_contents("http://www.domain.dk");
Avatar billede fluii Nybegynder
22. oktober 2004 - 16:21 #2
file_get_contents virker ikke, da den kræver PHP >4.3.0 (Jeg har kun 4.2.2 - har skrevet til B-one om at få det opgradert...)

Men kan du give et eksembel på brugen af fsockopen()... ?
Avatar billede jakobsynder Nybegynder
23. oktober 2004 - 14:50 #3
$host = "www.domain.dk";
$path = "/some/path/to/file.php?var=value&yetavar=yetavalue";

// åben forbindelse til port 80
if(!$fp = fsockopen($host, 80)) {
  // der skete en fejl
}

// lav headers (du kan selvfølgelig tilføje referer, user-agent osv efter behag)
$header  = "GET $path HTTP/1.1\r\n";
$header .= "Host: $host\r\n";
$header .= "Connection: Close\r\n\r\n";

// send headers gennem din forbindelse
fputs($fp, $header);

// modtag svar
while(!feof($fp)) {
  $content .= fgets($fp, 2048);
}

// luk forbindelse
fclose($fp);

Du har så filens indhold i variablen $content - bemærk dog at dette er inkl. headers fra serveren, men de kan filtreres fra ved at fjerne alt fra start af strengen til første gang du rammer to linieskift i træk.

Der findes glimrende beskrivelser af funktionerne på http://php.net/[funktionsnavn]
HTTP kan du læse om her: http://www.faqs.org/rfcs/rfc2616.html
Avatar billede istasi Nybegynder
08. november 2004 - 14:00 #4
$content = file ( 'http://www.google.com' );

Kortere men skunne nu gerne ogsaa virke .. bruger den selv ;)
Avatar billede istasi Nybegynder
08. november 2004 - 14:02 #5
wops jeg smakker vist ikke saa godt ...

Den er en del kortere og virker lige saa fint .. du faar dog siden i et array splittet paa '\n' (newline, linieskift) ... men nem at bruge :)
Avatar billede fluii Nybegynder
09. november 2004 - 18:30 #6
Istasi> Det virker ikke... den mælder

Warning: file("http://www.google.com") - No such file or directory in /customers/fluii.dk/fluii.dk/httpd.www/grap.php on line 10
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester