[PHP] Espresione regolare Clicca QUI per vedere il messaggio nel forum |
Napolux |
Questa è un'espressione che fa il parsing di un URL
PHP:
$string = eregi_replace("(news|http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)","<a href="\1://\2" target="_blank">\1://\2</a>", $string);
Come posso modificarla in modo che non faccia niente se nella stringa, prima del link c'e' una quadra chiusa?
Del tipo "]http://eccetera" ??
Grazie |
Alf |
Non saprei se puoi mettere una condizione in quella funzione ...
Io metterei semplicemente prima dell'eregi questo:
if(strcmp($string[0],"]")!=0)
Non so se nel tuo caso e' necessario controllare che non sia vuota $string. |
Napolux |
Originally posted by Alf
Non saprei se puoi mettere una condizione in quella funzione ...
Io metterei semplicemente prima dell'eregi questo:
if(strcmp($string[0],"]")!=0)
Non so se nel tuo caso e' necessario controllare che non sia vuota $string.
Mah, posso provare ad adatare la tua soluzione ma non è una singola frase che vado a valutare, ma un'intero testo.
Quindi $string[0] non necessariamente farà parte dell'url. Potrebbe anche essere 1000 parole prima. |
DeepBlue |
Io non sono un grandissimo esperto di regex, ma credo che abbia ragione Alf.
Perché non usi due regex? La prima verifica la presenza della parentesi quadra prima di http e la seconda fa tutto il resto.
Qualcosa del tipo:
if (!parentesi_prima_di_http) { fai_eregi_di_blah_blah; } |
Alf |
Originally posted by Napolux
Mah, posso provare ad adatare la tua soluzione ma non è una singola frase che vado a valutare, ma un'intero testo.
Quindi $string[0] non necessariamente farà parte dell'url. Potrebbe anche essere 1000 parole prima.
Beh adattala l'idea e' quella ... :)
Cerca magari la pos di "http://" e poi controlla che il carattere prima (se c'e') sia diverso da ] :)
Boh guarda tu ... :) |
giulio |
Originally posted by Napolux
Questa è un'espressione che fa il parsing di un URL
PHP:
$string = eregi_replace("(news|http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)","<a href="\1://\2" target="_blank">\1://\2</a>", $string);
Come posso modificarla in modo che non faccia niente se nella stringa, prima del link c'e' una quadra chiusa?
Del tipo "]http://eccetera" ??
Grazie
Aggiungi [^]] all'inizio dell'espressione regolare:
$string = eregi_replace("[^]](news|http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)","<a href=\"\1://\2\" target=\"_blank\">\1://\2</a>", $string);
Attenzione che non funziona (cioe' niente replace) nel caso l'URL sia all'inizio
di $string.
Ciao,
gc |
Napolux |
l'avevo gia' provato.
fatto, per le immagini funziona, ma per gli url non fa più il parsing :( |
Napolux |
Forse ho trovato, ci lavoro questo pomeriggio e poi vi faccio sapere :D |
Napolux |
Risolto con i token.... |
|
|
|