Salve a tutti!
Ho creato un'applicazione web con un piccolo editor le cui funzioni sono analoghe a quelle di questo forum, vale a dire corsivo, grassetto, sottolineato, immagine, url e elenco a più voci.
La suddetta applicazione non dà alcun problema di codice, cioè è sintatticamente corretta, ma non appena avvio lo script che la richiama, non riesce a cavare piede da un caricamento che pare infinito. I problemi sorgono, tuttavia, quando inserisco i tag che in questo forum possono essere definiti come (url) e (/url) e (img)(/img) tra parentesi quadre. C'è un'eccezione però: per url elementari e immagini composte da pochi caratteri, lo script non va in timeout.
Lo script è basato sull'utilizzo delle regular expressions, che funzionano benissimo fin quando la funzione bbcode_new testa una stringa inserita direttamente da codice, ma usando un editor con tanto di casella di testo e pulsante di invio, il caricamento, nei casi citati, è praticamente infinito.
Potete aiutarmi? Posto di seguito il codice.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
function bbcode_new(argStrText)
Dim objRegExp
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "[allinea=(centro)]"
argStrText = objRegExp.Replace(argStrText, "<div style=""text-align:center"">")
objRegExp.Pattern = "[allinea=(destra)]"
argStrText = objRegExp.Replace(argStrText, "<div style=""text-align:right"">")
objRegExp.Pattern = "[allinea=(sinistra)]"
argStrText = objRegExp.Replace(argStrText, "<div style=""text-align:left"">")
objRegExp.Pattern = "[\/allinea]"
argStrText = objRegExp.Replace(argStrText, "</div>")
objRegExp.Pattern = "[car=(rosso),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=red size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(verde),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=green size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(giallo),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=yellow size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(blu),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=blue size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(rosa),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=pink size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(fucsia),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=magenta size=""$2"" face=""$3"">")
objRegExp.Pattern = "[car=(celeste),([0-9]{1,2}),(arial|verdana|times new roman|ms sans serif)]"
argStrText = objRegExp.Replace(argStrText, "<font color=cyan size=""$2"" face=""$3"">")
objRegExp.Pattern = "[\/car]"
argStrText = objRegExp.Replace(argStrText, "</font>")
' objRegExp.Pattern = "[(/)?(B|I|U|UL|LI)]"
' argStrText = objRegExp.Replace(argStrText, "<$1$2>")
objRegExp.Pattern = "[(/)?(GR)]"
argStrText = objRegExp.Replace(argStrText, "<$1b>")
objRegExp.Pattern = "[(/)?(COR)]"
argStrText = objRegExp.Replace(argStrText, "<$1i>")
objRegExp.Pattern = "[(/)?(SOT)]"
argStrText = objRegExp.Replace(argStrText, "<$1u>")
objRegExp.Pattern = "[(/)?(BAR)]"
argStrText = objRegExp.Replace(argStrText, "<$1s>")
objRegExp.Pattern = "[(/)?(ELENCO)]"
argStrText = objRegExp.Replace(argStrText, "<$1ul>")
objRegExp.Pattern = "[(/)?(VOCE)]"
argStrText = objRegExp.Replace(argStrText, "<$1li>")
'A CAPO
objRegExp.Pattern = "[a_capo]"
argStrText = objRegExp.Replace(argStrText, "
")
'LINK
objRegExp.Pattern = "[link=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{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-z0-9._-]{2,5}))*)?(,nuovo)]"
argStrText = objRegExp.Replace(argStrText, "<a href=""http://$1.$2.$3$4"" target=_blank>")
objRegExp.Pattern = "[\/link]"
argStrText = objRegExp.Replace(argStrText, "</a>")
' IMMAGINE
objRegExp.Pattern = "[img=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{2,5}))*)?,(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?)(,destra)]"
argStrText = objRegExp.Replace(argStrText, "![image]()")
objRegExp.Pattern = "[img=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{2,5}))*)?,(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?)(,centro)]"
argStrText = objRegExp.Replace(argStrText, "![image]()")
objRegExp.Pattern = "[img=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{2,5}))*)?,(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?)(,sinistra)]"
argStrText = objRegExp.Replace(argStrText, "![image]()")
objRegExp.Pattern = "[img=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{2,5}))*)?,(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?)(,alto)]"
argStrText = objRegExp.Replace(argStrText, "![image]()")
objRegExp.Pattern = "[img=([a-z0-9._-]{1,100})+\.([a-z0-9._-]{1,100})+\.([a-z]{2,4})+(/*([a-z0-9._-]{1,100})*(.([a-z0-9._-]{2,5}))*)?,(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?),(([0-9]{1,4})(%)?)(,basso)]"
argStrText = objRegExp.Replace(argStrText, "![image]()")
set objRegExp = Nothing
bbcode_new = argStrText
End Function
%>
<% response.write bbcode_new("[car=blu,7,arial][allinea=centro][link=www.siforge.org/articles/2002/09/22-regex.html,nuovo]Ciao[/link] da parte mia[/car][img=www.magicocagliari.it/loghi/newlogo3.jpg,100%,100%,0,basso][/allinea][a_capo][car=verde,3,arial]Questo è il mio script[/gr][/car][a_capo][car=fucsia,2,verdana][cor][sot]Che codifica il linguaggio HTML[/cor][/sot][/car][a_capo][elenco][voce]QUESTA è LA PRIMA VOCE[/voce][voce][bar]QUESTA è LA SECONDA VOCE[/bar][/voce][voce]QUESTA è LA TERZA VOCE[/voce][/elenco]")%>