Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157

    preg_match espressione regolare

    salve ragazzi:

    in un sorgente pagina come questo:

    codice:
               <h2>eccoci trovato</h2>
    <div id="test">
        <h3>ecco il testo che vorrei che venisse trovato</h3>
        <div

    utilizzo questa regexp:

    Codice PHP:
            preg_match("/<h3>(.*)<\/h3>/" ,$Testo,$Matches);
        
        
            
    print_r($Matches); 
    per trovare:

    Array
    (
    [0] => <h3>ecco il testo che vorrei che venisse trovato</h3>
    [1] => ecco il testo che vorrei che venisse trovato
    )


    mentre se metto:

    Codice PHP:
            preg_match("/<div id=\"test\"><h3>(.*)<\/h3>/" ,$Testo,$Matches);
        
        
            
    print_r($Matches); 
    non mi da risultato in quanto ho ignorato l'interruzione di riga e alcune tabulazioni che servono per l'indentazione dell'html.

    La domanda è questa:
    esiste un modo per dire alla regexp "fregatene delle interruzioni di riga, degli spazi e delle tabulazioni"?

    L'alternativa è fare un replace delle tabulazioni, spazi e accapo alla stringa prima di darla in pasto alla regexp, ma mi sembra un pò un ripiego come soluzione: vorrei imparare a usare bene le regexp.

    Grazie mille.
    viva il web.

  2. #2
    Puoi dire al motore della regex di considerare il carattere di a capo (\n) come match valido per il punto usando il modificatore /s.
    Non puoi invece dirgli di ignorare spazi e tab, quello devi scriverlo nel pattern.
    Inoltre se scegli dei delimitatori diversi dal classico slash, quelli eventualmente presenti nel pattern non devono piu' essere quotati.

    Riassumendo, puoi usare questa regex:
    codice:
    preg_match('#<div id="test">\s*<h3>(.*?)</h3>#s', $testo, $match);

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    grazie mille della dritta
    viva il web.

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.