Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    59

    Script PHP cerca stringa nella pagina

    Salve a tutti.

    Ho realizzato un piccolo script che controlla se nel codice HTML di una pagina c'è una determinata stringa di testo, e a seconda dei casi salva quell'url in un file di testo.

    Ecco il codice:

    Codice PHP:
    <?php
    $url 
    "WWW.URL.COM";
    $homepage file_get_contents($url);

    if (!
    strpos($homepage,'TESTO DA TROVARE'))
    {
    echo 
    "Non trovato.";

    $stringa $url."\n";
    $scrivi_file =fopen("nontrovato.txt","a");
    fwrite($scrivi_file,$stringa);
    fclose($scrivi_file);

    }
    else
    {
    echo 
    "Trovato!";

    $stringa $url."\n";
    $scrivi_file =fopen("trovato.txt","a");
    fwrite($scrivi_file,$stringa);
    fclose($scrivi_file);

    ?>
    Ho provato lo script e funziona correttamente.

    Visto che gli URL da controllare sono tanti volevo far prendere in automatico gli URL allo script da un file di testo esterno, che contiene un URL per riga.

    Ho pensato di modificare cosi lo script:
    Codice PHP:
    <?php
    $file 
    file_get_contents('./prova.txt'FILE_USE_INCLUDE_PATH);
    $array explode("\n"$file);


    foreach( 
    $array as $var_temporanea ) {

    $homepage file_get_contents($var_temporanea);

    if (!
    strpos($homepage,'TESTO')) {

    echo 
    "Non trovato.";

    $stringa $var_temporanea."\n";
    $scrivi_file =fopen("nontrovato.txt","a");
    fwrite($scrivi_file,$stringa);
    fclose($scrivi_file);

    } else {
    echo 
    "Trovato!";

    $stringa $var_temporanea."\n";
    $scrivi_file =fopen("trovato.txt","a");
    fwrite($scrivi_file,$stringa);
    fclose($scrivi_file);


    }
    ?>
    Purtroppo però con il PHP sono agli inizi, e non so ancora lavorare con il foreach e con gli array.

    Dovrebbero esserci errori in quest'ultimo script visto che mi mostra continui Warning e mi salva solo un valore come "Trovato" mentre tutti gli altri come "Non trovato".

    Dove ho sbagliato? :P

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    che warning ti da?

    Codice PHP:
    <?php

    $file 
    file_get_contents('./prova.txt'FILE_USE_INCLUDE_PATH);
    $array explode("\n"$file);

    foreach( 
    $array as $var_temporanea ) {
        if(!empty(
    $var_temporanea)){
        
    $homepage file_get_contents(trim($var_temporanea));

            if(!
    strpos($homepage,'TESTO')){
                echo 
    "Non trovato.
    "
    ;
                
    file_put_contents("nontrovato.txt"$var_temporanea."\n"FILE_APPEND);

            }else{
                echo 
    "Trovato!
    "
    ;
                
    file_put_contents("trovato.txt"$var_temporanea."\n"FILE_APPEND);
            } 
        }
    }

    ?>
    ho fatto una prova e così a me funziona..

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    59
    Anche a me funziona, però alcuni URL non riesce ad aprirli e mi da dei Warning.

    Warning: file_get_contents(http://it.wikipedia.org/wiki/%27R%27:_Rembrandt) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\xampp\htdocs\asd.php on line 7

    Negli URL che non riesce ad aprire mi restituisce l'URL nel file nontrovato.txt è normale?

  4. #4
    Originariamente inviato da Zed92
    Anche a me funziona, però alcuni URL non riesce ad aprirli e mi da dei Warning.

    Warning: file_get_contents(http://it.wikipedia.org/wiki/%27R%27:_Rembrandt) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\xampp\htdocs\asd.php on line 7

    Negli URL che non riesce ad aprire mi restituisce l'URL nel file nontrovato.txt è normale?
    Si è normale, per lui l'strpos() è comunque false...

    Comunque per me è Wikipedia che blocca in qualche modo la richiesta, facendo l'urlencode() non dovrebbe darti problemi in teoria, nemmeno per i caratteri speciali...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    59
    è lo stesso problema che avevo con l'altro script, alcuni url con caratteri speciali fopen e file_get_contents non riescono ad aprirli.

    L'altro script però credo che risolvesse il problema con le cURL.

    Codice PHP:
    // The fread_url function allows you to get a complete
    // page. If CURL is not installed replace the contents with
    // a fopen / fget loop

        
    function fread_url($url,$ref="")
        {
            if(
    function_exists("curl_init")){
                
    $ch curl_init();
                
    $user_agent "Mozilla/4.0 (compatible; MSIE 5.01; ".
                              
    "Windows NT 5.0)";
                
    $ch curl_init();
                
    curl_setopt($chCURLOPT_USERAGENT$user_agent);
                
    curl_setopt$chCURLOPT_HTTPGET);
                
    curl_setopt$chCURLOPT_RETURNTRANSFER);
                
    curl_setopt$chCURLOPT_FOLLOWLOCATION );
                
    curl_setopt$chCURLOPT_FOLLOWLOCATION );
                
    curl_setopt$chCURLOPT_URL$url );
                
    curl_setopt$chCURLOPT_REFERER$ref );
                
    curl_setopt ($chCURLOPT_COOKIEJAR'cookie.txt');
                
    $html curl_exec($ch);
                
    curl_close($ch);
            }
            else{
                
    $html file_get_contents($url); 
            }
            return 
    $html;
        } 
    Purtroppo io non ci capisco molto, ma voi penso non avete problemi.

  6. #6
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    hai abilitato la liobreria curl innanzitutto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    59
    Si dopo aver abilitato la libreria cURL l'altro script funzionava.

    Adesso dovrei aggiungere questa funzione a questo script e vedere se funziona, come implementarla?

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    Codice PHP:
    <?php

    $file 
    file_get_contents('./prova.txt'FILE_USE_INCLUDE_PATH);
    $array explode("\n"$file);

    foreach( 
    $array as $var_temporanea ) {
        if(!empty(
    $var_temporanea)){

            
    $ch curl_init();
            
    $user_agent "Mozilla/4.0 (compatible; MSIE 5.01; ".
                              
    "Windows NT 5.0)";
            
    $ch curl_init();
            
    curl_setopt$chCURLOPT_USERAGENT$user_agent);
            
    curl_setopt$chCURLOPT_HTTPGET);
            
    curl_setopt$chCURLOPT_RETURNTRANSFER);
            
    curl_setopt$chCURLOPT_FOLLOWLOCATION );
            
    curl_setopt$chCURLOPT_FOLLOWLOCATION );
            
    curl_setopt$chCURLOPT_URLtrim($var_temporanea) );
            
    curl_setopt$chCURLOPT_REFERER$ref );
            
    curl_setopt ($chCURLOPT_COOKIEJAR'cookie.txt');
            
    $homepage curl_exec($ch);
            
    curl_close($ch); 

            if(!
    strpos($homepage,'TESTO')){
                echo 
    "Non trovato.
    "
    ;
                
    file_put_contents("nontrovato.txt"$var_temporanea."\n"FILE_APPEND);

            }else{
                echo 
    "Trovato!
    "
    ;
                
    file_put_contents("trovato.txt"$var_temporanea."\n"FILE_APPEND);
            } 
        }
    }

    ?>
    EDIT: testato anche su wikipedia e funziona

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    59
    Ottimo adesso funziona, grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.