Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Regex Multilinea

  1. #1

    Regex Multilinea

    Salve a tutti, dopo i piccoli problemi che ho risolto su questo forum, ora mi ritrovo io con un piccolo problema. Creando un piccolo Template Engine per pagine html mi sono bloccato su una regex:

    codice:
    #\{Loop:(\d+|\$\w+)\}([^{/Loop}].+)\{/Loop}#U
    al posto della faccina c'è ": ("


    Questa espressione funziona benissimo su di un testo del tipo

    codice:
    {Loop:10}INSIDE 1 LOOP{Loop:$myVar}INSIDE 2 LOOP{/Loop}{/Loop}
    ma se provo a darle il testo

    codice:
    {Loop:10}INSIDE 1 LOOP
    
    
    {Loop:$myVar}INSIDE 2 LOOP{/Loop}{/Loop}
    Non funziona più. Sapete il motivo?

    Grazie in anticipo.

  2. #2
    Devi aggiungere il modifier 's' alla regexp.

  3. #3
    Ciao, grazie. Avevo già provato ma mi combinava un pasticcio e mi sballava tutta la regex.
    Ho risolto con questa:

    codice:
    #\{Loop:([\d]+|\$[\w]+)}(((?>[^{}]+)|(?R))*).?\{EndLoop}#
    Però, l'unico problema è che se all'interno di {Loop:}....{EndLoop} ci metto {$myVar} non funge più. Forse potrebbe essere la parte [^{}] visto che il suo compito è quello di controllare che non ci siano i caratteri {} in modo tale da migliorare le prestazioni. Poi non so, non le ho ben capite le Once-Only Subpatterns. Mah... Mi arrendo?

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.