Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
[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(&quot;(news|http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)&quot;,&quot;<a href=&quot;\1://\2&quot; target=&quot;_blank&quot;>\1://\2</a>&quot;, $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; }

Napolux
provero'

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(&quot;(news|http|https|ftp)://([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)&quot;,&quot;<a href=&quot;\1://\2&quot; target=&quot;_blank&quot;>\1://\2</a>&quot;, $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....

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate