Visualizzazione risultati 1 fino 8 di 8

Discussione: Ricavare dati da pagina esterna fsockopen() o curl+regex

  1. #1
    Guest

    Predefinito Ricavare dati da pagina esterna fsockopen() o curl+regex

    Salve a tutti, stavo provando a codare in php in generatore dinamico di firme per un gioco online gratuito. Faccio inserire l'usernam in un form, e salvo in una variabile l'url http://ava.ijji.com/ranking/individual.nhn?m=alltime&option.value=$nick , ora il problema è ricavare le statistiche.

    Ora che io sappia posso aprire la pagina sia facendo
    Codice PHP:
    $fp = fsockopen("$url", 80);
    oppure
    Codice PHP:
    $ch = curl_init();
    ecc.
    Ora dovrei usare una regex per ricavare il settore
    "<tr class="bgn">" della pagina che cntiene tutti i dati fino all chiusura di quel <tr> ed è proprio qui che non so come fare.
    ecco un un url con ei dati di esempio http://ava.ijji.com/ranking/individu...ion.value=Guf0

    Grazie in anticipo

  2. #2
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    La mia sign (prima immagine) prende i dati dalla classifica di AV.
    Porzione di codice di esempio:
    Codice PHP:
    # Controlla la presenza nella top100 Mensile (_m)
    $top100_m = file_get_contents('http://it.altervista.org/classifica.php?Ref=self&Cerca='.$nickname.'&classifica=Top100M&Ordina=Punti');
    $posizione_m = '#<div class="position"><span class="site_position">(.*)</span></div>#i';
    preg_match($posizione_m,$top100_m,$posizione_m);
    $voti_m = '#<li><span class="alter2 bold">Voti: </span> (.*)</li>#i';
    $visite_m = '#<li><span class="alter2 bold">Visite: </span> (.*)</li>#i';
    $punti_m = '#<li><span class="alter2 bold">Punti: </span> (.*)</li>#i';
    preg_match($voti_m,$top100_m,$voti_m);
    preg_match($visite_m,$top100_m,$visite_m);
    preg_match($punti_m,$top100_m,$punti_m);
    e quindi converto i valori ottenuti in un'immagine GD

  3. #3
    Guest

    Predefinito

    Se ho capito bene al posto di curl of fsockopen usi file_get_contents()?

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,752

    Predefinito

    Forse potrà essere scontato, ma visto che sei un utente "nuovo" su AV, devi sapere che per leggere sorgenti da siti esterni devi sbloccare la connessione server2server dal pannello.

    Comunque, non è necessario andarsi a complicare la vita usando le CURL o fsokopen: da poco su altervista si possono usare le funzioni "normali" dei file come la file(), la fopen() la file_get_contents() anche per siti esterni (ripeto: prima devi sbloccare le connessioni server2server...)...

    Ciao!
    Ultima modifica di alemoppo : 13-02-2011 alle ore 16.10.17

  5. #5
    Guest

    Predefinito

    Grazie per avermelo detto ma sapevo già che era da sbloccare, comunque grazie ad entrambi per l'aiuto, ora provo!
    -
    Seguendo il tuo snippet ho provato a fare
    Codice PHP:
    $fp = file_get_contents($url);
    $rank = '#<tr class="bgn"><td>(.*)<br>#'

    preg_match($rank,$fp,$rank);
    echo
    $rank
    Ma printa questo errore
    Parse error: syntax error, unexpected T_STRING in /membri/avait/playercard/post.php on line 8
    Ultima modifica di darkwolf : 13-02-2011 alle ore 17.02.25

  6. #6
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Codice PHP:
    <?php
    $url
    = "http://ava.ijji.com/ranking/individual.nhn?m=alltime&option.value=Guf0";
    $fp = file_get_contents($url);
    $rank = '#<tr class="bgn">\s*<td>(.*)<br>#i';
    preg_match($rank,$fp,$rank);

    print_r($rank);

    /* Output:
    Array
    (
    [0] => <tr class="bgn">
    <td>23395<br>
    [1] => 23395
    )*/
    ?>
    Quindi puoi stampare con: echo $rank[0] (o [1] - se desideri avere solo il valore)
    Ultima modifica di darkwolf : 13-02-2011 alle ore 17.32.00 Motivo: Alcuni ritocchi...

  7. #7
    Guest

    Predefinito

    Scusa, ho fatto casino con i post xD
    Chiedo venia, di solito i punti e virgola sono la prima cosa che guardo, stavolta ero troppo preso dalla funzione.
    Ora guardo grazie.

    edit: Funziona Grazie mille! Ora provo con gli altri dati
    Ultima modifica di avait : 13-02-2011 alle ore 17.22.16

  8. #8
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Scusa, non avevo visto la tua replica, vedi sopra (avevo editato).

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •