Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544

    preg_replace non funziona

    Ho messo questo codice nel textarea in modo che quando in mezzo al testo viene inserita una mail, questa si stampa cliccabile, solo che messo così mi rende cliccabile tutto il testo inserito nel textarea

    Codice PHP:
    $messaggio preg_replace("/^(.*)+[@](.*)+$/","<a href=\"mailto:$0\" class=\"carattereText\">$0</a>",$messaggio); 

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ti succede perché è sbagliata l'espressione regolare.

    (.*)+ dice "prendi qualsiasi cosa" quindi sono compresi anche gli spazi e di conseguenza

    bla bla pippo@isp.tld ciccio
    viene tutto preso, escludi gli spazi e ti prenderà solo l'indirizzo email.
    Inoltre ^ dice che il match deve cominciare dall'inizio della stringa, quindi se l'email non è la prima cosa, escludendo gli spazi (quindi rendendo buono il pattern per prendere l'indirizzo) questo non ti verrà considerato.
    Allo stesso modo $ indica che ciò che cerchi deve essere anche l'ultima cosa presente nella stringa in cui si cerca.

    insomma, al momento la tua espressione regolare (escludendo gli spazi) prenderebbe un indirizzo solo se fosse l'unica cosa presente nella stringa.

  3. #3
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da Alhazred
    Ti succede perché è sbagliata l'espressione regolare.

    (.*)+ dice "prendi qualsiasi cosa" quindi sono compresi anche gli spazi e di conseguenza

    bla bla pippo@isp.tld ciccio
    viene tutto preso, escludi gli spazi e ti prenderà solo l'indirizzo email.
    Inoltre ^ dice che il match deve cominciare dall'inizio della stringa, quindi se l'email non è la prima cosa, escludendo gli spazi (quindi rendendo buono il pattern per prendere l'indirizzo) questo non ti verrà considerato.
    Allo stesso modo $ indica che ciò che cerchi deve essere anche l'ultima cosa presente nella stringa in cui si cerca.

    insomma, al momento la tua espressione regolare (escludendo gli spazi) prenderebbe un indirizzo solo se fosse l'unica cosa presente nella stringa.
    Perciò come la modifico?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    In giro ci sono un sacco di pattern diversi per riconoscere indirizzi email, ma uno che ci prende sicuro, a meno di una cosa lunghissima, non ce n'è.
    La struttura degli indirizzi email è così flessibile che possono venir fuori indirizzi molto particolari.

    Un possibile pattern potrebbe essere questo
    codice:
    ([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}

  5. #5
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da Alhazred
    In giro ci sono un sacco di pattern diversi per riconoscere indirizzi email, ma uno che ci prende sicuro, a meno di una cosa lunghissima, non ce n'è.
    La struttura degli indirizzi email è così flessibile che possono venir fuori indirizzi molto particolari.

    Un possibile pattern potrebbe essere questo
    codice:
    ([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}
    Lo so, c'è l'ho già funzionante ma lo voglio modificare in modo che accetta qualsiasi cosa e che toglie gli spazi

  6. #6
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Diciamo che in parte ci sono riuscito ma non del tutto, ora la parte destra del testo la ignora ma rende linkabile tutta la sinistra

    Codice PHP:
    $messaggio preg_replace("/((.*)[@](.*)[.][a-z]{2,4})/","<a href=\"mailto:$0\" class=\"carattereText\">$0</a>",$messaggio); 

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.