Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - [risolto]aiuto con regular expression
Forum - Javascript - [risolto]aiuto con regular expression

Avatar
Il_maca (Ex-Member)
Pro


Messaggi: 163
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 13:09
Lunedì, 25/07/2011
Salve a tutti. Stavo modificando una chat, fatta in ajax e php. La chat non l'ho fatta io, ma è un progetto gpl e ho chiesto all'autore il permesso di modificarla.
Utilizzo le regexp per i link e le emoticons, ma spesso vanno in conflitto e vedo i link con le faccine!! Ovviamente il link non funge.
Codice sorgente - presumibilmente Plain Text

  1. $mex=$mex.replace(/:\-\(|:\(|:cry:|:sad:/g, "<img src='xxx.png' alt=':('        style='max-width: 16px; max-height: 16px' Title=':('/>");


questo è un esempio relativo alle emoticons;

Codice sorgente - presumibilmente Javascript

  1. var link = /((http|https|ftp|ftps):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g;


Questa invece è l'espressione regolare utilizzata per i link. Ora dovrei fare in modo che quando viene eseguita la funzione di replace per le emoticons, venga esclusa dalle ricerche la parte relativa al link! Ma come posso fare? Non ho così tanta dimestichezza con le regexp xd

EDIT
-Mte90 Scusami mi sono reso conto dopo di non essere stato chiaro:
in sostanza sto modificando una chat. Uso la funzione replace,con la relativa regexp, per cambiare l'indirizzo immesso dall'utente (che è semplice testo) in un link cliccabile. Stessa cosa faccio per la sostituzione di determinate serie di caratteri con il codice html per la visualizzazione dell' emoticon corrispondente. Il problema sorge quando ho ad esempio l'emoticon ':/' questa viene sostituita nei link (http :/ /) e quindi mi viene incasinato il link...potrei cambiare il codice di questa emoticon ma è successo anche con altre emoticon (x., :o...). Vorrei sapere se esiste soluzione a questo problema.
EDIT
Ok, ho risolto in modo molto semplice...anche se un tantino macchinoso:
in sostanza cerco nella stringa se ci sono occorrenze di link usando la funzione match(). Se tra occorrenze le salva in un vettore. Se trova occorrenze di link, sostituisco i link con un tag di mia scelta (io ho usato [[link]]), e passo quindi alla sostituzione dei codici delle emoticons (:),:(,:\ eccetera) con l'html utile per farle visualizzare. Fatto questo ripristino i link che avevo trovato sostituendoli con il tag. In questo modo i link non vengono modificati dalle funzioni per le emoticon.

Ultima modifica effettuata da Il_maca il 28/07/2011 alle 13:00


Il computer non è una macchina inteligente nelle mani di gente stupida; ma è una macchina stupida nelle mani di gente intelligente (o almeno si spera).
PM
Avatar
Mte90 (Member)
Guru


Messaggi: 1144
Iscritto: 25/03/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 14:01
Martedì, 26/07/2011
non ti sei spiegato bene.
puoi essere più chiaro?


http://www.mte90.net/
Kde, Debian e Programmazione web/Desktop!


Linux Counter.li #482442
PM