Visualizzazione risultati 1 fino 3 di 3

Discussione: [PHP-Regex] Ottenere informazioni da html

  1. #1
    Guest

    Predefinito [PHP-Regex] Ottenere informazioni da html

    Ciao a tutti;
    Ho un nuovo problema.

    Io ho del codice html che prelevo da un sito con una socket.
    Ora avrei bisogno di elaborare l'html e di caricare delle informazioni su una array con le espressioni regolari; ma il problema è che dopo vari tentativi non ci sono riuscito!


    ecco il codice html:

    http://revolt.speedweek.net/main/tracks.php

    Cosa devo ottenere lo ho messo in grassetto.

    <div class="download_image_small"><a href="comments.php?trackname=Air+Garden"><img src="../dload/tracks/images/airgarden_small.jpg"></a></div>

    per favore; anche solo un aiutino :-)

    Ciauz!
    Mattia

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Puoi farlo anche con DOMDocument (sotto PHP 5).
    Non so quale sia la differenza di prestazioni, ma secondo me (che di regex ne so moolto poco) concettualmente è più semplice con DOM :)
    Ti ho scritto questo script, che, provato restituisce in output:

    00mountain - 00mountain_small.jpg
    1004 - 1004_small.jpg
    2Fun - 2Fun_small.jpg
    2X - 2x_small.jpg
    3x+World - 3x_world_small.jpg
    4%27s+And+5%27s - 4s_and_5s_small.jpg
    666 - 666_small.jpg
    8+on+Ice - 8_on_ice_small.jpg
    A+farewell+to+RHQ - Farewell_RHQ_small.jpg
    A+Lot+Of+Bridges - a_lot_of_bridges_small.jpg
    A+Problem+Whit+Volters - a_problem_whit_volters_small.jpg
    A+rainy+day - rday_small.jpg
    Abandon+Roads - abandon_roads_small.jpg
    Abandoned+Warehouse - AbndWhse_small.jpg
    Absinthe - absinthe_small.jpg
    Abstract - abstract_small.jpg
    Adrenaline - Adrenaline_small.jpg
    Age+de+Glace - AgeGlace_small.jpg
    Age+of+Miracles - AGE_OF_MIRACLES_small.jpg
    AI+Project+%28test+track%29 - Aipro_tt_small.jpg
    Air+Garden - airgarden_small.jpg
    Airtime - AirTime_small.jpg
    Airtime+2 - AirTime2_small.jpg
    Airtime+3 - At3_small.jpg
    Ajerodynamic - ajerodynamic_small.jpg

    Codice PHP:
    $xml = new DOMDocument();
    $xml->loadHTML($html);
    $tdiv = $xml->getElementsByTagName('div');
    foreach(
    $tdiv as $div)
    if(
    $div->getAttribute('class') == 'download_image_small')
    {
    $figli_div = $div->childNodes;
    $a = $figli_div->item(0);
    $figli_a = $a->childNodes;
    $img = $figli_a->item(0);
    $pa = explode('=',$a->getAttribute('href'));
    $pimg = explode('images/',$img->getAttribute('src'));
    echo
    $pa['1'] .' - '. $pimg['1'].'<br />';
    }
    Ti spiego come funziona :)

    Per prima cosa instanziamo la classe DOMDocument.
    Carichiamo l'html su cui lavorare ($html) e prendiamo tutti i div nel documento (getElementsByTagName('div')).
    Iteriamo sull'array e filtriamo secondo l'attributo "class" prendendo solo gli elementi che appartengono alla classe 'download_image_small'.
    Per il div corrente prendiamo tutti i nodi figli in $figli_div, l'elemento 0 corrisponde al nodo 'a', che contiene al suo interno il sotto-nodo 'img'.
    Del primo prendiamo l'attributo href e lo dividiamo con explode in due parti, usando il carattere "=" come delimitatore.
    Stampiamo poi la seconda parte, ovvero quella dopo il "=", che ci interessa, e che corrisponde all'elemento 1 dell'array $pa.
    Dell'img prendiamo solo la parte dopo "http://forum.it.altervista.org/images/" dell'attributo src.
    Ciao!
    Ultima modifica di programmazioned : 26-08-2008 alle ore 23.29.14 Motivo: perchè viene automaticamente aggiunto l'indirizzo del forum prima di images/? :S

  3. #3
    Guest

    Predefinito

    perfetto!
    non sapevo dell'esistenza di questa libreria...... grazie mille :-)

Regole di scrittura

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