Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Estrapolare indirizzi email da testo

    Buon pomeriggio.
    Ho un testo del tipo:
    codice:
    si informa che l’indirizzo mail corretto cui inviare i quesiti di natura tecnica è impiantifotovoltaici@miosito.it e ma.rossi@miosito.it
    Al momento facendo in questo modo, mi estrapola soltanto il primo indirizzo e lo trasforma in link, vorrei farlo anche per il secondo.
    Codice PHP:
    function EmailInText($text){
    if (
    eregi("[a-z\._-]+@[a-z\._-]+\.[a-z]{2,3}",$text,$array)){
    $emailObf "<a href='/mailto.php?id=".obfEmail($array[$i])."'>".$array[$i]."</a>";$t str_replace($array[$i],$emailObf,$text);}
    return 
    $t;

    Aiutino?
    Grazie a tutti.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    La funzione eregi() è deprecata, così come tutte le sue compagne, devi usare le funzioni preg_...
    Nel tuo caso preg_match_all()

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    secondo me se non hai necessità di verificare gli indirizzi che trovi, potresti fare una cosa più semplice senza espressioni regolari, tipo

    Codice PHP:
    function ctrEmail($em){
      return 
    filter_var(filter_var($emFILTER_SANITIZE_EMAIL), FILTER_VALIDATE_EMAIL);
    }

    function 
    EmailInText($text){
      
    $email = array();
      
    $parole explode(" "$text);

      foreach(
    $parole as $parola){
        if(
    strpos($parola"@") > && ctrEmail($parola)){
          
    $email[] = "<a href='mailto:$parola'>$parola</a>";
        }
      }

      return 
    $email;

    Ultima modifica di rikyeko; 10-10-2016 a 16:38 Motivo: integrazione controllo email
    Riccardo Sadocchi
    Microsoft MCP C#

  4. #4
    Buon giorno a tutti.
    Ho utilizzato la soluzione postata da rikyeko.

    1) return $email; non mi stampa i due indirizzi email ma "Array"
    2) per visualizzarli ho utilizzato print_r($email);
    3) se utilizzo la funzione ctrEmail($parola), mi restituisce un qualche errore per cui non visualizzo più il contenuto della pagina.
    forse ho una versione di php 5.1.6, che non mi permette l'utilizzo delle costanti FILTER_VALIDATE_EMAIL e FILTER_SANITIZE_EMAIL?

    Grazie mille.

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Per stampare il contenuto di un array va fatto un ciclo su di esso
    Codice PHP:
    foreach($email as $indirizzo)
    {
        echo 
    $indirizzo;


  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Per utilizzare filter_var devi avere PHP >= 5.2.0

  7. #7
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Per utilizzare filter_var devi avere PHP >= 5.2.0
    L'avevo immaginato.

    Comunque, non riesco a sostituire gli indirizzi email testuali presenti nel testo con quelli trasformati in link.
    Mi aiutate per favore?
    Grazie mille.

  8. #8
    ho fatto in questo modo e funziona, ditemi se c'è comunque qualche miglioria che potrei apportare.
    Codice PHP:
    function EmailInText($text){    
    $link = array();    
    $parole explode(" "$text);    
    $email = array();    
    foreach(
    $parole as $parola){        
    if(
    strpos($parola"@") > 0){            
    $link[] = "<a href='mailto.php?id=".obfEmail($parola)."'>$parola</a>";            
    $email[]=  $parola;        }    }
    return 
    str_replace($email,$link,$text);

    Grazie.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Codice PHP:
    function EmailInText($text)
    {    
        
    $v '/([a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4})\b/i';    
        
    $r "<a href='/mailto.php?id=$1'>$1</a>";    
        
    $res preg_replace($v$r$text);    
        return 
    $res;


    Io avrei fatto così, uso una espressione regolare per fare un controllo più approfondito sull'indirizzo email, ed è anche più semplice.

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.