VVoVe:
VVoVe:
Io e il mio collega stiamo realizzando un piccolo editor per un'applicazione web. L'obiettivo di questa è di eliminare la difficoltà propria del linguaggio html sostituendo i tag di questo con altri tag semplificati molto più intuitivi per l'utilizzatore.
Dopo diversi tentativi, abbiamo realizzato che il modo migliore per far fronte a ciò che ci veniva chiesto era quello di ricorrere alle regular expressions.
Tutto abbastanza bene per i tag più semplici, vale a dire il
e i vari tag di formattazione testo.
I problemi sono sorti con il tag <a href="...">. All'atto di sostituire questo abbiamo ottenuto, con il nostro codice, il risultato di veder visualizzato come link qualsiasi indirizzo internet che:
- non abbia sottolivelli
- abbia sottolivelli il cui nome è composto da caratteri ESCLUSIVAMENTE alfabetici
- il primo sottolivello contenga qualsiasi genere di carattere
è di conseguenza immediato capire come i sottolivelli che seguono, se numerici o comunque contenenti caratteri non alfabetici, non funzionino come invece accade per quelli di sopra. Per "non funzionare" si intende che, invece del tag html decodificabile dal browser compare a video la nostra sintassi, che noi vorremmo rimpiazzata.
In parole povere vorremmo avere un risultato identico a quello che in questo forum è ottenibile con i tag (url) e (/url) tra parentesi quadre.
Vi posto il codice delle regular expressions elaborate. Cosa manca, o cosa c'è di sbagliato?
**********
objRegExp.Pattern = "\[link=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z]{2,5}))*)?(,stesso)\]"
argStrText = objRegExp.Replace(argStrText, "<a href=""http://$1.$2.$3$4"" target=_self>")
objRegExp.Pattern = "\[link=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z]{2,5}))*)?(,nuovo)\]"
argStrText = objRegExp.Replace(argStrText, "<a href=""http://$1.$2.$3$4"" target=_blank>")
objRegExp.Pattern = "\[\/link\]"
argStrText = objRegExp.Replace(argStrText, "</a>")
************
Perché la mia applicazione smetta di funzionare, basta applicare stringhe simili.
1) [link=www.undominio.org/prova/2000.it,nuovo]Ciao[/link]
2) [link=www.undominio.org/1000/2000.it,nuovo]Ciao[/link]
3) [link=www.undominio.org/prova/1000/unapagina.it,nuovo]Ciao[/link]
4) [link=www.undominio.org/1000/sub/2000.it,nuovo]Ciao[/link]
5) [link=www.undominio.org/sub1/2000/sub2/unapagina.it,nuovo]Ciao[/link]
e anche
6) 4) [link=www.undominio.org/aaa/a/a/unapagina.it,nuovo]Ciao[/link]
cioè i sottolivelli composti da un solo carattere.
Stiamo impazzendo, aiutateci!
:master:
![]()
![]()
![]()
![]()