Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173

    [RegEx] sostituire gli a capo

    Ciao a tutti,
    pur dopo essermi "sparato" un buon numero di discussioni su questo ed altri forum, non sono riuscito a venir fuori dal mio problema.

    Tramite una form l'utente del sito (intranet) che sto realizzando, compila una textarea con un articolo da lui redatto e al termine lo registra.

    Il mio script recupera il contenuto e lo elabora, ma purtroppo non fa tutto quello che vorrei che facesse, ovvero:
    desidero che quando l'utente preme l'invio (return) nella textarea, questo venisse sostituito da un tag "
    ", ma quando ne preme due o più, questo sostituisse con i tag "</p>

    ".

    Il risultato sperato è questo:

    'stringa recupetata
    strTesto = "Questa è la prima riga." & vbcrlf &_
    vbcrlf &_
    "Questa è la terza riga. " & vbcrlf &_
    "Questa la quarta."

    'risultato
    strTesto = "Questa è la prima riga.</p>

    "
    "Questa è la terza riga.
    "
    "Questa la quarta."

    Così facendo mi basta aggiungere un tag "

    " all'inizio del testo e un tag di chiusura "</p>" alla fine e ho ottenuto una corretta formattazione del testo e dei suoi paragrafi.

    La funzione che ho scritto per trovare il doppio return è la seguente:
    codice:
    Function RimuoviDoppioReturn(strTesto)
       Set RegEx = New RegExp
       RegEx.Global = True 
       RegEx.IgnoreCase = True
       RegEx.Pattern = "\r{2,}"
       RimuoviDoppioReturn = RegEx.Replace(strTesto,"</p>
    
    ")
       set RegEx = nothing
    End function
    Ovviamente non funziona. Sapreste darmi qualche suggerimento?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173
    Ho trovato la soluzione che segue, ma è solo un palliativo:

    codice:
    <%
    	Function RimuoviDoppioReturn(strTesto)
        	Set RegEx = New RegExp
        	RegEx.Global = True 
        	RegEx.IgnoreCase = True
    		RegEx.Pattern = "§§§{2,}"
        	strTesto = RegEx.Replace(strTesto,"</p>
    
    ")
    		RegEx.Pattern = "§§§{1}"
        	RimuoviDoppioReturn = RegEx.Replace(strTesto,"
    ")
        	set RegEx = nothing
    	End function
    	
    	strTesto = "Questa è la prima rigra." & vbcrlf & vbcrlf &_
    	"Questa è la terza riga. " & vbcrlf &_
    	"Questa la quarta."
    	
    	strTesto = Replace (strTesto, vbcrlf, "§§§")
    		
    	strTesto = RimuoviDoppioReturn(strTesto)
    	
    	
    %>
    
    
    <%= strTesto %></p>
    Potreste suggerirmi un metodo più pulito?
    ;-)

  3. #3
    Non puoi semplicemente dirgli di cliccare una volta?

  4. #4
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173
    No perchè un invio (return) deve equivalere a un un tag
    , cioè un a capo, due o più li devo considerare come un nuovo paragrafo.

  5. #5
    Io le RE non le ho mai usate e non saprei come aiutarti, mi spiace.

  6. #6
    Utente di HTML.it L'avatar di mjungle
    Registrato dal
    Mar 2002
    Messaggi
    173
    Grazie lo stesso, spero che qualche ardito mi dia un valido suggerimento.
    ;-)

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.