-
Espressioni regolari
Sto cercando di utlizzare le espressioni regolari per rimpiazzare la stringa
[ link=url]titolo[/link]
in
<a href="url" target="_blank">titolo</a>
Per far questo ho utilizzato questa espressione regolare:
\[[lL]{1}[iI]{1}[nN]{1}[kK]{1}=((f|ht){1}tp://)?([-a-zA-Z0-9@:%_\+.~#?&//=]+[^\]]*)\]([\w\W]+[^\[]*)\[/link\]
quindi i valori sarebbero questi:
url = \\1\\3
titolo = \\4
Il problema è che questo non funziona, qualcuno sa dirmi perchè?
-
Perchè è un caos e il motore PCRE si rifiuta di leggerla :razz: :lol:
Nella tua regexp, la cosa che mi è saltata subito all'occhio è questa:
[\w\W]+
Che vuole dire? tutto quello che è una parola ma anche tutto quello che non lo è ... contradditoria, direi
Forse c'è qualcos'altro ma ora non ho proprio voglia di leggerla a fondo, sorry :oops:
-
Questo è quello che uso nel mio deForum:
Codice PHP:
$trg_testo=eregi_replace("([^=])(http){1}(://){1}([^<>[:space:]]+)"," <u><a href=\"http://\\4\" target=\"_blank\">\\2\\3\\4</a></u> ",$trg_testo);
Ciaoo!!!!!!
-
solo una nota, anzi 2 :roll:
la regex di Debug è per la formattazione degli url senza tag (cioè senza [link=])
Inoltre è preferibile usare preg_replace invece di eregi_replace perchè leggermente più veloce :top:
-
Visto che stava tentando di procedere con le regex gli ho postato un esempio sul quale studiare, invece che la pappa pronta ;)
Questo non annulla ovviamente le tue note ;)
Ciaooo!!!!!
-
Si, la nota non era ovviamente rivolta a te debug, ma a chiunque fosse interessato alla discussione e alle prime armi con le espresioni regolari.
dato che ci sono posto un esempio pure io :wink:
\[url=(http|https|ftp)://([^\]]+)\](.*?)\[url\]