Visualizzazione dei risultati da 1 a 8 su 8

Discussione: link ed emoticon chat

  1. #1

    link ed emoticon chat

    Ciao a tutti,
    volevo chiedere un consiglio.. Sto sviluppando una chat e volevo chiedervi un consiglio, facendovi un piccolo esempio..
    Un utente scrive questo: "Ciao :-) guarda questo link http://www.google.it"..

    Ovviamente voglio sostituire il ': - )' con l'immaginina dell'emoticon corrispondente e 'http://www.google.it' con un link html.

    Il mio problema è questo.. esiste un emoticon con questa sequenza di char ":/" (due punti - slash). Questa sequenza compare anche all'interno del link 'http://www.google.it'..

    Vorrei eseguire il replace con l'emoticon solo se non si trova all'interno del link..
    Qualcuno sa darmi un consiglio??

    grazie in anticipo

  2. #2
    Non riesco a capire... Tu vuoi sostituire quasta (:-)) con questa (:\) oppure vuoi sostituirla con una emoticon come questa ( )?

  3. #3
    io voglio sostituire qualsiasi emoticon:
    - questa :-) con
    - questa :-( con
    - ecc..

    il problema è che quando ho un link, es http://www.google.it, all'interno di quest'ultimo ho la sequenza :/, che nella mia applicazione è un emoticon e quindi va a sostituirmela e mi viene fuori una cosa del genere:

    da:
    <a href="http://www.google.it>http://www.google.it</a>
    a:
    /www.google.it>http://www.google.it

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Usa le espressioni regolari

    $testo = preg_replace('/:\/(?=[^\/])/','[img]/img/emoticon/03.gif[/img]',$testo)

  5. #5
    Mi sa che mi hai salvato la vita.. la provo subito..
    Me la spieghi anche?? non ci capisco molto di espressioni regolari..

    grazieeeeeee!!

  6. #6
    non funziona

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Non puo' non funzionare, avrai sbagliato qualcosa nel integrare il codice. Posta qui la porzione interessata, e l'eventuale errore che ricevi.

    Per quanto riguarda la spiegazione, e' semplice:

    Per non fare confusione con l'escape del \/ possiamo scrivere l'espressione anche cosi':

    $testo = preg_replace('#:/(?=[^/])#','[img]/img/emoticon/03.gif[/img]',$testo);

    ## sono i delimitatori
    :/ e' il simbolo cercato
    (?= ) e' un asserzione positiva che guarda avanti (cioe' da cos'e' seguito il carattere cercato) - non includera' nella ricerca il carattere successivo
    [] definisce una classe di caratteri, e ^ all'interno e' una negazione
    Quindi il tutto insieme significa: trova qualsiasi :/ che non sia seguito da una /, e sostuiscilo con [img]/img/emoticon/03.gif[/img]

    Si poteva fare anche il contrario, cioe' '#:/(?=\s)#' che significa qualsiasi :/ seguito da uno spazio - sta a te scegliere, in base a come vuoi che funzioni nella tua applicazione.

    Ps: ti conviene studiare le espressioni regolari, altrimenti avrai molte difficolta a creare un applicazione completa

  8. #8
    hai ragione!! funziona benissimo!! grazie ancora :-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.