Visualizzazione risultati 1 fino 26 di 26

Discussione: URL linkabile

  1. #1
    Guest

    Predefinito URL linkabile

    Quando l'utente va nel campo textarea e nel suo messaggio inserisce anche un url o un'email, questi vorrei che poi a video appaiano come link. Però la trasformazione a link deve essere automatica senza bisogno di inserire i tag.

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    puoi spiegarti meglio?
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    Devi usare le espressioni regolari, precisamente preg_replace.
    Cerca questi termini nel forum e troverai sicuramente qualcosa.
    Sul sito php.net trovi la guida ufficiale con alcuni esempi.


    Ciaoooo!!!!!

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Devi usare le espressioni regolari, precisamente preg_replace.
    Cerca questi termini nel forum e troverai sicuramente qualcosa.
    Sul sito php.net trovi la guida ufficiale con alcuni esempi.


    Ciaoooo!!!!!
    Ora con gli url ho risolto, che codice metto per le email?

    Codice PHP:
    //Se ne textarea si scrive un'url lo rende linkabile automaticamente
    $messaggio = preg_replace('/((http(s)?:\/\/)|(www\\.))((\w|\.)+)(\/)?(\S+)?/i','<a href="\0">\0</a>', $messaggio);
    $messaggio = str_replace("www.","http://www.",$messaggio);
    $messaggio = str_replace("http://http://","http://",$messaggio);

  5. #5
    Guest

    Predefinito

    Stesso discorso di prima, sempre l'espressioni regolari, solo con diverso pattern.


    Ciaoooooo!!!!

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Guarda qui.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Stesso discorso di prima, sempre l'espressioni regolari, solo con diverso pattern.


    Ciaoooooo!!!!
    Spiegami, con le email è diverso perchè c'è "mailto"

  8. #8
    Guest

    Predefinito

    Codice PHP:
    preg_replace("#([_\.0-9a-z-]+@[0-9a-z][0-9a-z-]+\.+[a-z]{2,3})#is", "<a href=\"mailto:$1\">$1</a>", $origine);
    prova questo per le mail!

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da jostock Visualizza messaggio
    Codice PHP:
    preg_replace("#([_\.0-9a-z-]+@[0-9a-z][0-9a-z-]+\.+[a-z]{2,3})#is", "<a href=\"mailto:$1\">$1</a>", $origine);
    prova questo per le mail!
    Si, funziona però me la devi spiegare: cosa sono quei 2 cancelletto, $1, is?

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    I due cancelletti dovrebbero indicare che la "parola" da trovare non si trova necessariamente all'inizio o alla fine della stringa.
    $1 è il primo (e, in questo caso, anche l'ultimo) valore restituito dall'espressione regolare, quindi è l'indirizzo e-mail.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    cancelletti: le espressioni regolari sono solitamente delimitate da / .... /, ma è una convenzione! in realtà puoi usare qualsiasi simbolo per definirne l'inizio e la fine, basta che sia lo stesso ad entrambi gli estremi. In questo caso, Jostock ha usato il #.

    Poter cambiare simbolo è comodo quando hai un'espressione regolare piena al suo interno di /, così non devi stare li a proteggerle tutte (con "\/") e diventa più facile da leggere

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    cancelletti: le espressioni regolari sono solitamente delimitate da / .... /, ma è una convenzione! in realtà puoi usare qualsiasi simbolo per definirne l'inizio e la fine, basta che sia lo stesso ad entrambi gli estremi. In questo caso, Jostock ha usato il #.

    Poter cambiare simbolo è comodo quando hai un'espressione regolare piena al suo interno di /, così non devi stare li a proteggerle tutte (con "\/") e diventa più facile da leggere
    Ho notato una cosa, ho sostituito la tua reg con la mia che uso per validare il campo email.

    Messa cosi come sotto viene inviata la validazione ma a video il campo textarea appare vuoto mentre quella che mi hai dato funziona, non capisco perchè mi valida il campo email e non funziona se inserita cosi:

    Codice PHP:
    $messaggio = preg_replace("^([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})$","<a href=\"mailto:$1\">$1</a>",$messaggio);

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    perché non hai messo i delimitatori all'espressione regolare, come avevo giusto spiegato nel mio post precedente metti uno / all'inizio ed uno alla fine della regexp

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    perché non hai messo i delimitatori all'espressione regolare, come avevo giusto spiegato nel mio post precedente metti uno / all'inizio ed uno alla fine della regexp
    Ho messo le 2 barre, ora appare a video ma non diventa link

    Codice PHP:
    $messaggio = preg_replace("/^([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})$/","<a href=\"mailto:$1\">$1</a>",$messaggio);

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    ora, non ho idea di cosa si l'input che arriva da $messaggio, però quella espressione regolare cerca una riga che contiene solo un indirizzo email, perché c'è ^ e $ agli estremi. Non è più l'espressione che ti aveva dato Jostock, e se l'hai cambiata non si comporterà più allo stesso modo... quindi chissà cosa cerca nella stringa

  16. #16
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Uscendo un attimo dal lato tecnico (che vedo è stato spiegato molto bene)..
    vorrei spostare l'attenzione sul fatto che i poverini che innocentemente inseriranno i lloro email nei tuoi messaggi si ritroveranno una nuova fonte di SPAM in più.
    Linkare con mailto: un indirizzo email è come urlare al mondo: "eccomi spammatemi! intasatemi la casella mail di robaccia", e in questo caso peggio ancora non solo tua ma dei malcapitati commentatori, magari ignari del destino dei loro indirizzi email.
    Come avrai notato in alcuni blog e simili dove si fanno lasciare commenti (a utenti non registrati) si chiede loro di inserire la mail... ma viene anche specificato chiaramente che questi indirizzi NON saranno assolutamente linkati nella pagina.
    Ultima modifica di heracleum : 11-08-2007 alle ore 13.32.08
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum Visualizza messaggio
    Uscendo un attimo dal lato tecnico (che vedo è stato spiegato molto bene)..
    vorrei spostare l'attenzione sul fatto che i poverini che innocentemente inseriranno i lloro email nei tuoi messaggi si ritroveranno una nuova fonte di SPAM in più.
    Linkare con mailto: un indirizzo email è come urlare al mondo: "eccomi spammatemi! intasatemi la casella mail di robaccia", e in questo caso peggio ancora non solo tua ma dei malcapitati commentatori, magari ignari del destino dei loro indirizzi email.
    Come avrai notato in alcuni blog e simili dove si fanno lasciare commenti (a utenti non registrati) si chiede loro di inserire la mail... ma viene anche specificato chiaramente che questi indirizzi NON saranno assolutamente linkati nella pagina.
    Nel mio campo textarea uno può inserire quello che vuole come del resto in tutti i textarea, perciò se uno scrive volontariamente la propria email sa a cosa va incontro

    EDIT:
    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    ora, non ho idea di cosa si l'input che arriva da $messaggio, però quella espressione regolare cerca una riga che contiene solo un indirizzo email, perché c'è ^ e $ agli estremi. Non è più l'espressione che ti aveva dato Jostock, e se l'hai cambiata non si comporterà più allo stesso modo... quindi chissà cosa cerca nella stringa
    Scusa ma c'è qualcosa che non afferro: la reg in questione non deve validare l'email? Quel codice l'ho messo in modo che quando l'utente inserisce l'email nel textarea si autolinca.

    Ora ho tolto le parti estreme ma si autolinca a metà (solo la parte prima della chiocciola)

    Codice PHP:
    $messaggio = preg_replace("/([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})/","<a href=\"mailto:$1\">$1</a>",$messaggio);
    Ultima modifica di debug : 11-08-2007 alle ore 18.18.57

  18. #18
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Temo che una cosa sia scrivere un indirizzo email testualmente e ben altra golosa attrattiva per gli spambot (anche quelli fatti dai ragazzini di 8 anni) un link con un "comodissimo" e riconoscibilissimo mailto: all'inizio. Comunque... la mia era una riflessione, nel caso uno non fosse imformato dei rischi, se pensi di aver valutato già tutto, allora ok.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  19. #19
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum Visualizza messaggio
    Temo che una cosa sia scrivere un indirizzo email testualmente e ben altra golosa attrattiva per gli spambot (anche quelli fatti dai ragazzini di 8 anni) un link con un "comodissimo" e riconoscibilissimo mailto: all'inizio. Comunque... la mia era una riflessione, nel caso uno non fosse imformato dei rischi, se pensi di aver valutato già tutto, allora ok.
    Scusa...scrivere il proprio email linkabile o no che cambia?

  20. #20
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    @heracleum: un mio amico ha iniziato a registrare caselle email con dentro nospam. tipo gianninospam@qualcosa.it. di colpo ha smesso di arrivargli spam, ma anche molta posta normale credo

    @photoman: mi sta scuocendo la pasta, lo sento. Quella non è la stessa espressione regolare di prima, l'hai cambiata, non puoi pretendere che funzioni allo stesso modo. I simboli $1 $2 $3 sono collegati alle parentesi tonde della regexp, in ordine di apparizione. Tu hai messo tre gruppi di parentesi, e se noti vedi solo il primo...

  21. #21
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    @heracleum: un mio amico ha iniziato a registrare caselle email con dentro nospam. tipo gianninospam@qualcosa.it. di colpo ha smesso di arrivargli spam, ma anche molta posta normale credo

    @photoman: mi sta scuocendo la pasta, lo sento. Quella non è la stessa espressione regolare di prima, l'hai cambiata, non puoi pretendere che funzioni allo stesso modo. I simboli $1 $2 $3 sono collegati alle parentesi tonde della regexp, in ordine di apparizione. Tu hai messo tre gruppi di parentesi, e se noti vedi solo il primo...
    Ho cambiato la parte finale, l'email è: ghuyj@lkiuuyy.mn ma a video appare ghuyj.mn

    Codice PHP:
    $messaggio = preg_replace("/([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})/","<a href=\"mailto:$1$2$3\">$1$2$3</a>",$messaggio);

  22. #22
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    non importa, hai cambiato il pattern quindi l'espressione non va più bene. Riparti dalla cima del thread e rileggi, c'è quella corretta.

  23. #23
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    non importa, hai cambiato il pattern quindi l'espressione non va più bene. Riparti dalla cima del thread e rileggi, c'è quella corretta.
    Al limite male che vada uso la vostra....non ci sarà solo questa reg che funziona, no?

  24. #24
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    photoman: Cambia, ti assicuro che cambia, .

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    @heracleum: un mio amico ha iniziato a registrare caselle email con dentro nospam. tipo gianninospam@qualcosa.it. di colpo ha smesso di arrivargli spam, ma anche molta posta normale credo
    Eheheh.. e il povero altro utente di posta "giannino" si è trovato un sacco di mail di cui non capirà il perché.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  25. #25
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum Visualizza messaggio
    photoman: Cambia, ti assicuro che cambia, .


    Eheheh.. e il povero altro utente di posta "giannino" si è trovato un sacco di mail di cui non capirà il perché.
    Ho risolto, questa funziona, ho solo aggiunto le 2 parentesi tonde estreme in modo da creare un solo gruppo, ho ina domanda: quel is alla fine della vostra reg a cosa serve?

    Codice PHP:
    $messaggio = preg_replace("/(([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4}))/is","<a href=\"mailto:$1\">$1</a>",$messaggio);

  26. #26
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    allora, adesso che la pasta è cotta posso prendermi più tempo
    la tua regexp è
    Codice:
    /([-_.#$&%+a-z0-9]+)[@][a-z]+(\.[-_#$&a-z0-9]{2,})*(\.[a-z]{2,4})/
    che vuol dire:
    • una sequenza non vuota di [-_.#$&%+a-z0-9] seguita da
    • un carattere nell'insieme [@]. In realtà sarebbe sufficiente scrivere @.
    • una sequenza non vuota di [a-z] - nota che questa non è fra tonde, quindi non finisce in $n
    • una sequenza anche vuota di sottodominii (riconosciuti da \.[-_#$&a-z0-9]{2,}) e per finire
    • un unico dominio di primo livello \.[a-z]{2,4}

    Le tre parentesi tonde vanno a riempire $1, $2 e $3. Il resto va perso nella trasformazione Aggiungi un paio di tonde la dove mancano e dovrebbe funzionare anche lei.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •