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

    Problema con espressioni regolari di tipo "lazy"

    Ciao a tutti,
    sto cercando di implementare una espressione regolare in uno script PHP, ma ricevo sempre un errore di REG_BADRPT

    L'espressione che uso è molto semplice ( è un esempio )

    <h3>(.*?)</h3>

    in quanto, in questo caso, ho bisogno di recuperare tutte le stringhe contenute tra i tag h3 di una pagina HTML

    Se provo l'espressione in un tool dedicato, il tutto funziona regolarmente, ma se lo uso in PHP, mi da l'errore REG_BADPRT, che a quanto pare è relativo alla parte *? dell'espressione, di fatti, rimuovendo il ? non da errore ma nella variabile mi carica tutto ciò che sta dopo <h3> ( metodo "greedy" ).

    Se provo l'espressione in Js funziona... quindi la domanda è..

    come posso utilizzare una regex "lazy", ovvero che catturi meno testo possibile, in linguaggio PHP?

    il codice PHP è questo

    if (eregi('<h3>(.*?)</h3>', $part, $regs)) {
    $result = $regs[1];
    } else {
    $result = "";
    }

    grazie 1000!!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    non so se ho capito bene.

    codice:
    <? ob_start() ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <h3>testo 1</h3>
    <h3>testo 2</h3>
    <h3>testo 3</h3><h3>testo 4</h3>
    <h4>pippo</h4><h3>testo 5</h3>
    <hr>
    <? 
    $part = ob_get_contents();
    ob_end_flush();
    preg_match_all('|<h3>(.*)</h3>|U', $part, $regs);
    print_r($regs[1]);
     ?>
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Grande!
    Ci siamo quasi.. nel senso che funziona ma mi compare all'inizio della pagina questo errore ( nel mio script.. il tuo funzia alla grande )

    Warning: preg_match_all() expects parameter 2 to be string, object given in d:\webs\template.php on line 62

    in questo caso

    preg_match_all('|<h3>(.*)</h3>|U', $part, $regs);

    il parameter 2 è $part, giusto?

    ho provato sia con la pagina html "parserizzata" che con una semplice stringa di testo... la sua funzione la fa ma mi esce sto errore...

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il secondo parametro è $part
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.