Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Espressioni regolari, estrarre un div

    Ipotizziamo di dover estrarre il codice completo del div che contiene il testo ("zuniga al napoli") da un articolo come questo:
    codice:
    <div id="primo">
    <span class="prova">calcio</span>
    <div id="secondo">Zuniga al napoli</div>
    testo di prova
    </div>
    una regexp di questo tipo:
    codice:
    <div [^>]*>(.*?)Zuniga al napoli</div>
    funziona male perchč cattura tutto dal primo <div> che trova (che non č quello che contiene il testo) e si ferma al primo </div> (che chiude appunto il testo). Se poi dentro al div esistono altri tag html prima di "Zuniga al napoli", č finita

    Come modifichereste quella regexp per farvi restituire:
    <div id="secondo">Zuniga al napoli</div>

  2. #2
    Cosė:

    Codice PHP:
    $rex='<div[^>]*>([^<]*)<\\/div>/i'
    Cattura quello che vuoi, ma solo in questo caso specifico e senza tag html nel testo, come notavi tu. Se al codice html aggiungessi un altro div similare troverebbe prima quello.
    Se potessi individuare il div dall'id sarebbe pių semplice. O cmq se la struttura html sei sicuro che rimanga quella (il tuo div sempre come secondo div) si puō anche matchare il testo con eventuale codice html.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Originariamente inviato da AnĒkin
    Cosė:

    Codice PHP:
    $rex='<div[^>]*>([^<]*)<\\/div>/i'
    Cattura quello che vuoi, ma solo in questo caso specifico e senza tag html nel testo, come notavi tu. Se al codice html aggiungessi un altro div similare troverebbe prima quello.
    Se potessi individuare il div dall'id sarebbe pių semplice. O cmq se la struttura html sei sicuro che rimanga quella (il tuo div sempre come secondo div) si puō anche matchare il testo con eventuale codice html.
    grazie per l'espressione, perō purtroppo non so a priori se ci saranno altri tag dentro il div.
    Per cui, come hai gia notato tu, con
    codice:
    <div id="secondo">Zuniga al napoli</div>
    non riuscirebbe a "catturare" il div.

  4. #4
    Originariamente inviato da l'evangelista
    grazie per l'espressione, perō purtroppo non so a priori se ci saranno altri tag dentro il div.
    Per cui, come hai gia notato tu, con
    codice:
    <div id="secondo">Zuniga al napoli</div>
    non riuscirebbe a "catturare" il div.
    Ma almeno sai che la posizione del div sarā sempre al secondo posto? O che avrā sempre id="secondo"? Che non contenga div al suo interno?
    Insomma dovresti avere almeno un'informazione "fissa" di qualche genere.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Originariamente inviato da AnĒkin
    Ma almeno sai che la posizione del div sarā sempre al secondo posto? O che avrā sempre id="secondo"? Che non contenga div al suo interno?
    Insomma dovresti avere almeno un'informazione "fissa" di qualche genere.
    no, ahime č un bagno di sangue

    so solo che c'č un testo, da quello devo risalire al div che lo contiene (in sostanza l'ultimo aperto)

  6. #6
    Originariamente inviato da l'evangelista
    no, ahime č un bagno di sangue

    so solo che c'č un testo, da quello devo risalire al div che lo contiene (in sostanza l'ultimo aperto)
    capisco
    Se sei sicuro che č l'ultimo div aperto puoi provare una cosa del genere:

    Codice PHP:

    $str
    =<<<STR

    <div id="primo">
    <span class="prova">calcio</span>
    <div id="none">Zuniga al Chelsea</div>
    <div id="nomancoquesto">Zuniga al Manchester</div>
    <div id="secondo">Zuniga al [b]<span>n</span>apoli[/b]</div>
    testo di prova
    </div>

    STR;

    preg_match('/<div [^>]*>(?!.+<div)(.*?)<\\/div>/s',$str,$mth);
    echo 
    '<pre>'.print_r($mth,true); 
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    forse ti conviene usare xsl ( o meglio, xquery )
    puoi farlo anche in php

  8. #8
    Originariamente inviato da AnĒkin
    capisco
    Se sei sicuro che č l'ultimo div aperto puoi provare una cosa del genere:
    Ottimo!!!! 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 © 2024 vBulletin Solutions, Inc. All rights reserved.