Avatar billede lassel Nybegynder
24. juni 2005 - 22:58 Der er 4 kommentarer og
1 løsning

At parse en ekstern side

Hey ;)

Har nu forsøgt at få hentet en ekstern side hjem som en streng på flere måder :( ... uden held.

Eksempelvis:
$side = fopen($url, "r");
og med file(), readfile()...

Lige meget hvad får jeg fejlmeddelelser som f.eks. "...URL file-access is disabled in the server configuration..."

Hehe, ser jo fint ud som om min host ikke er interesseret i at deres kunder skal bruge for meget af deres båndbredde og computerkraft til at hente hele sider ned og parse i dem?

Hosten er b-one, er der nogen "genvej"?
Formålet er at kunne hente enkelte meget simple tektuelle sider ned for derefter at parse disse og gemme i lokal database... men hvis ikke jeg kan hente siden som streng, kan jeg ikke helt se hvordan jeg skal få mulighed for at parse og behandle efterfølgende :(

Nogle idéer?

MVH
Avatar billede erikjacobsen Ekspert
24. juni 2005 - 23:08 #1
b-one er kendt for at have slået det fra - så en løsning er at finde en anden udbyder.
Avatar billede coderdk Praktikant
24. juni 2005 - 23:45 #2
Prøv at se om du kan bruge fsockopen i stedet:

<?php

    function getPage( $url )
    {
        preg_match( '-http://([^:/]+)((:)(\d+))?(/.*)?-', $url, $m );
        $host = $m[1];
        $port = ( !empty( $m[4] ) ? $m[4] : 80 );
        $path = ( !empty( $m[5] ) ? $m[5] : '/' );
        if ( $fp = @fsockopen( $host, $port, $ern, $ers, 5 ) )
        {
            fwrite( $fp, "GET $path HTTP/1.0\r\nHost: $host\r\nConnection: Close\r\n\r\n" );
            $cnt = '';
            while ( !feof( $fp ) )
            {
                $cnt .= fread( $fp, 2048 );
            }
            return preg_replace( '-.*?\r?\n\r?\n(.*)-s', '\\1', $cnt );
        }
        else
        {
            return false;
        }
    }
   
    if ( $cnt = getPage( 'http://eksperten.dk/spm/628340' ) )
    {
        echo $cnt;
    }
    else
    {
        echo "Fik ingenting.";
    }

?>
Avatar billede lassel Nybegynder
25. juni 2005 - 11:48 #3
"Fik ingenting." :o(

Ser håbløst ud, ellers godt svar, hvis ingen anden har alternativer vil jeg give dig pointene for et godt forsøg.
Avatar billede coderdk Praktikant
25. juni 2005 - 21:50 #4
Nej, det er ok, bare behold dem hvis det ikke virkede :)
Alternativt prøv lige for at være HELT sikker:

<?php

    function getPage( $url )
    {
        preg_match( '-http://([^:/]+)((:)(\d+))?(/.*)?-', $url, $m );
        $host = $m[1];
        $port = ( !empty( $m[4] ) ? $m[4] : 80 );
        $path = ( !empty( $m[5] ) ? $m[5] : '/' );
        if ( $fp = @fsockopen( $host, $port, $ern, $ers, 5 ) )
        {
            echo "Er forbundet!<br>";
            fwrite( $fp, "GET $path HTTP/1.0\r\nHost: $host\r\nConnection: Close\r\n\r\n" );
            $cnt = '';
            while ( !feof( $fp ) )
            {
                $cnt .= fread( $fp, 2048 );
            }
            echo $cnt;
            return preg_replace( '-.*?\r?\n\r?\n(.*)-s', '\\1', $cnt );
        }
        else
        {
            echo "ØV!";
            return false;
        }
    }
 
    if ( $cnt = getPage( 'http://eksperten.dk/spm/628340' ) )
    {
        echo $cnt;
    }
    else
    {
        echo "Fik ingenting.";
    }

?>
Avatar billede lassel Nybegynder
25. juni 2005 - 21:57 #5
"ØV!Fik ingenting." :D:D:D Tjaaa, det er fint nok... jeg er på vej til at kunne uploade et par php'er hos en andens webhotel, så løser jeg det bare vha. hans udbyder... bare øv når man ikke selv helt kan styre det ;)
Men ellers tak for hjælpen...!
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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