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

    [REGEX] parsare gli "a capo" di una stringa

    Ciao a tutti!
    Dal submit di una form ricavo una stringa con un numero variabile di "a capo", ovvero \R.

    Avrei bisogno di parsare la stringa in questo modo:

    Codice PHP:
    // stringa di partenza:

    $s="Lorem ipsum dolor.
    Sit amet disputandum.
    Vacuum dolor est."



    // stringa di arrivo:

    $s="

    Lorem ipsum dolor.</p>


    Sit amet disputandum.</p>


    Vacuum dolor est."
    </p>
    Non posso usare str_replace o simili in php perché questo meccanismo deve essere integrato in una funzione di parsing insieme ad altre regex, quindi dovrebbe essere fatto con le regex.

    In pratica bisognerebbe identificare tutto quello che sta tra il primo e l'ultimo carattere di ogni riga. È importante ricordare che l'ultima riga non termina con /R (la stringa finisce e non c'è rimando a capo).

    Ho fatto qualche tentativo, ma non ho ancora molta familiarità con le espressioni regolari... qualcuno può darmi una mano?

    Grazie mille!
    «Prendo rifugio nel grande BOH»

  2. #2
    UP... nessuno?
    «Prendo rifugio nel grande BOH»

  3. #3
    Con le regex di Vim farei una sostituzione '^' -> '

    ' e '$'-> '</p>', poi non so sei il dialetto di regex di PHP supporta questa cosa (che tra l'altro dipenderà anche dei flag passati alla funzione di replace, tipicamente la semantica di ^ e $ nei vari dialetti di regex è cambiata dall'opzione 'multiline' o simili).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Grazie.
    I parametri della funzione di preg-match sono questi:

    SEARCH: "#^(.*?)$#"
    REPLACE: '

    \\1</p>'

    In questo modo però non trova nulla
    «Prendo rifugio nel grande BOH»

  5. #5
    Devi usare la preg_replace e il modifier m (multiline).
    codice:
    echo preg_replace('/^(.*)$/m', '
    
    \1</p>', "prima riga\nsecondariga\nterzariga");
    output:
    codice:
    
    prima riga</p>
    
    
    secondariga</p>
    
    
    terzariga</p>
    Tra l'altro, mi pare che il problema sia più di PHP che di regex, ti sposto nella sezione appropriata.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.