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

    regexp - due problemi con stringhe

    Ciao, ho due problemi con le espressioni regolari (sempre che sia possibile usarle in questi casi)

    1) Ipotizzando questo codice html
    codice:
    <div id="notizia">
         <div id="data">11 gennaio 2009</div>
         <div id="testo">testo della notizia</div>
    </div>
    <div id="separatore"></div>
    posso catturare tutto il contenuto del div "notizia"?
    Se provo <div [^>]*>.*</div> ovviamente viene catturato tutto fino al </div> di separatore


    2) Dovrei cercare un tag che delimita un testo (ben preciso) in un file. Esempio:
    codice:
    <div id="notizia">
         <div id="data">11 gennaio 2009</div>
         <div id="testo">testo della notizia </div>
    </div>
    <div id="separatore"></div>
    io conosco solo "testo della notizia" e da qui dovrei risalire a "<div id="testo">".
    Il problema è che nell'html c'è il [b] di mezzo..
    Di contro neanche posso usare striptags perchè il tag precedente mi serve (e a priori non so se sia un div, un td, uno span)
    E' possibile far qualcosa o mi conviene scrivere un parser?

  2. #2
    Codice PHP:
    $pattern '#<div id="notizia">(.*?)</div>\\\s*<div id="separatore">#si'
    Per il secondo, utilizza TIDY + DOM.

  3. #3
    no scusa filippo, mi son spiegato male.
    la tua soluzione va bene se c'è un separatore ben preciso.

    pero se la struttura fosse questa

    codice:
    <div id="notizia">
         <div id="data">11 gennaio 2009</div>
         <div id="testo">testo della notizia</div>
         <div id="separatore"></div>
    </div>
    <div id="separatore"></div>
    l'espressione fallirebbe.
    Volevo sapere se è possibile catturare tutto quello che è compreso tra due tag <div></div>, anche se dentro a questi, a loro volta, si aprono e si chiudono altri div.

  4. #4
    In futuro, posta le tue richieste con maggior attenzione onde evitare di far perdere tempo agli altri utenti del forum.

    Se devi vuoi poter lavorare a livello di tag senza problemi di "innesti", utilizza TIDY + DOM, TIDY + SAX oppure utilizza una classe parser per l'HTML.

  5. #5
    Incuriosito dal problema (non ho mai fatto parsing del genere) ho provato ma senza successo, nel senso che non sono riuscito ad estrarre il contenuto del div#notizia cosi' com'e' con tutti i tag interni.

    Codice PHP:
    <?php
    $str 
    '<div id="notizia">
         <div id="data">11 gennaio 2009</div>
         <div id="testo">testo della notizia</div>
    </div>
    <div id="separatore"></div>'
    ;

    $dom = new DOMDocument;
    $dom->loadHTML($str);
    $divs $dom->getElementsByTagName('div');
    echo 
    $divs->item(0)->nodeValue;
    ?>
    restituisce il contenuto ma senza i div#data e div#testo

    Codice PHP:
    <?php
    $str 
    '<div id="notizia">
         <div id="data">11 gennaio 2009</div>
         <div id="testo">testo della notizia</div>
    </div>
    <div id="separatore"></div>'
    ;

    $tidy tidy_parse_string($str, array('output-xml' => true));
    $tidy->cleanRepair();
    $xml = new SimpleXMLElement($tidy);
    print_r($xml);
    ?>
    anche qui i div interni sembrano persi.

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.