Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Regular expression

  1. #1

    Regular expression

    Ciao a tutti! Prima di postare ho provato a cercare se trovavo qualche cosa a riguardo ma non ho trovato niente!

    Mi servirebbe una mano di qualche cervellone per partorire una regular expression che mi permetta di cercare in un testo tutto quello che è esterno a tag html!!!!

    Di script per ricercare i tag html (per eseguire il parsing o per eliminarli) se ne trovano a tonnellate ma per cercare tutto il complementare dei tag no!!! !!!!

    Qualcuno sa aiutarmi? Ho provato da solo ma effettivamente non è facile calcolando che non l'ho mai fatto.....

    Il fatto è che vorrei usare la funzione asp htmlencode per codificare un testo per una pagina html ma naturalmente mi serve farlo solo sul testo vero e proprio e non sui tag html dato che quello che scrivo è html!!!! Mi sono spiegato??

    Grazie verymille!!

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ti basta togliere dal testo ciò che è contenuto nei tag HTML no?
    Nel forum dovrei aver postato la funzione, mi pare si chiamasse eliminaHTML

    Roby

  3. #3
    Ciao! grazie per la risposta! Non intendo quello! Non Ci siamo capiti!

    Mi interessa per la gestione delle news sul mio sito. Io ho un modulo nel quale inserisco la mia news ma non volendo usare metatag ho deciso di non fare l'html encode di quello che scrivo e visualizzare poi la news "cruda" come la scrivo. Infatti dentro al modulo io scrivo html! D'altra parte le lettere come la è ( e accentata come tutte le vocali accentate), la e commerciale (&amp)ecc andrebbero tradotte col codice html per essere "standard" e lette senza problemi da tutte le piattaforme (mac linux e altro). Quindi sarebbe opportuno poter fare l'html encode ma del solo testo lasciando invariati però tutti i tag html nei quali per esenpio una & deve rimanere "&" e non diventare &amp!

    Quindi la mia idea era quella di creare un pattern con le regex per cercare tutto quello che NON è html per poi fare l'htmlencode del risultato ottenuto (che sarebbe il solo testo descrittivo senza tag html)

    Mi sono spiegato?

    Grazie ancora!

  4. #4
    della serie complichiamoci la vita a tutti i costi

    usa un wysiwyg e fai prima, io per esempio uso FCKeditor e mi trovo proprio bene, è anche abb velocemente personalizzabile


    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Non mi voglio complicare la vita! Solo mi piace programmare e tutto è cultura!!!! Volevo tenere la possibilità di scrivere html (proprio per comodità perchè se usassi tag personalizzati sarebbe fattibile e veloce) ma anche "fare le cose bene" ossia codificare per bene le cose, come se scrivessi una pagina html con un editor apposito come DreamWeaver!

    Cmq ora ho trovato una guida che sembra ben fatta sulle regex e vedrò se ci salterò fuori!!!!

    ps. Ho visto FCKeditor! Era una vita che cercavo un editor testuale per il web e non lo trovavo!!!
    grazie! Questo può davvero venire utile!!! VVoVe:

  6. #6
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Quello che vuoi fare non credo che si possa fare semplicemente usando il metodo replace delle regular expression.
    L'idea che viene a me in questo momento è di individuare con la RE quello che sta fuori dai tag html e poi ricostruire la stringa sostituendo i vari matches con l'htmlencode degli stessi.
    Per comodità mi faccio una funzione per sostituire una porzione di stringa con un'altra stringa
    codice:
    Function ReplaceDaA(str,da,lunghezza,sostituzione)
    	ReplaceDaA=Mid(str,1,da)&sostituzione&Mid(str,da+lunghezza+1)
    End Function
    e la funzione che fa l'htmlencode di quello che sta fuori dai tag
    codice:
    Function HtmlEncodeFuoriTag(str)
    	dim re,strx,differenzaLunghezza,ris
    	differenzaLunghezza=0
    	strx=str
    	set re=Server.CreateObject("VBScript.RegExp")
    	re.Pattern="(^|>)([\s\S]*?)((<[\/a-zA-Z])|$)"
    	re.Global=true
    	re.Multiline=true
    	set ris=re.Execute(str)
    	for each rr in ris
    		strx=ReplaceDaA(strx,rr.FirstIndex+differenzaLunghezza,rr.Length,rr.submatches(0)&Server.HTMLEncode(rr.submatches(1))&rr.submatches(2))
    		differenzaLunghezza=differenzaLunghezza+Len(Server.HTMLEncode(rr.submatches(1)))-Len(rr.submatches(1))
    	next
    	HtmlEncodeFuoriTag=strx
    End Function
    per testare il tutto
    codice:
    <form method="post">
    <textarea cols="100" rows="20" name="prova"><%=HtmlEncodeFuoriTag(Request.Form("prova"))%></textarea>
    <input type="submit" value="prova">
    </form>
    <%=HtmlEncodeFuoriTag(Request.Form("prova"))%>
    <hr color="red">
    <%=Replace(Server.HTMLEncode(HtmlEncodeFuoriTag(Request.Form("prova"))),vbCrLf,"
    ")%>

  7. #7
    Spettacolo! Grazie mille! Funziona ma non perfettamente!!! VVoVe:
    Comunque sei un mito!!!

    Il problema è questo:
    Non trova esattamente tutto quello che è fuori dai tag (o forse mi sono spiegato male perchè il risultato ha una logica)!

    prova a testare

    codice:
    grass&tto & t&g it&lic e &
    come risultato viene:

    codice:
    grass&tto &amp t&ampg it&lic e &amp
    Ho levato appositamente solo ora il ";" alla fine di &amp altrimenti il forum lo codificava come e commerciale

    Come vedi vengono codificate la seconda, terza e quinta e commerciale (che non a caso sono quelle estene alla coppia di tag) ma non la prima e la quarta!

    Viene preso tutto ciò che è fuori dai tag ma però fuori dalla coppia di tag! A me interesserebbe fare l'htmlencode anche di un testo per esempio interno a 2 tag italic o bold!!

    Penso basti modificare il pattern della regex!

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Giubano
    prova a testare

    codice:
    grass&tto & t&g it&lic e &
    testato e a me funziona... la stringa diventa
    codice:
    grass&amp;tto &amp; t&amp;g it&amp;lic e &amp;

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ok ho capito... il forum visualizza in maniera errata il pattern che ho fatto

    qua lo scrivo giuto
    codice:
    (^|>)([\s\S]*?)((<[\/a-zA-Z])|$)
    però viene visualizzato uno spazio dopo il primo >
    quota il mio post e preleva il codice qui sopra

    oppure te lo sc4rivo in maniera che venga visualizzato bene
    codice:
    (^|>)([\s\S]*?)((<[\/a-zA-Z])|$)

  10. #10
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    forse è meglio se ti spiego come ho fatto il pattern.
    cerco le stringhe che iniziano da "inizio stringa" o da ">" (chiuso tag)
    e poi qualunque cosa fino a quando incontra un "inizio tag" (il minore con la slash o una lettera dell'alfabeto) o la fine della stringa

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.