Foros del Web » Programando para Internet » PHP »

sacar email de un texto

Estas en el tema de sacar email de un texto en el foro de PHP en Foros del Web. Hola amigos: Necesito sacar los email de una linea de codigo HTML, si tengo este ejemplo <p><a href="mailto:[email protected]">[email protected]</a></p> y <p>[email protected]</p>Aqui va un texto y otras ...
  #1 (permalink)  
Antiguo 07/02/2007, 14:45
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Pregunta sacar email de un texto

Hola amigos:
Necesito sacar los email de una linea de codigo HTML, si tengo este ejemplo

<p><a href="mailto:[email protected]">[email protected]</a></p>
y
<p>[email protected]</p>Aqui va un texto y otras cosas

en el casi que tiene mailto: lo puedo leer haciendo referencia al mailto: ($lineaemail = strstr ($linea, "href=\"mailto:"); )
, pero en el otro caso no tengo idea, porque aqui la linea comienza por <p>, pero cuando tenga mas cosas delante no tengo idea como ahcerlo.

Por favor si me pueden ayudar se los agradecere
  #2 (permalink)  
Antiguo 08/02/2007, 07:37
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: sacar email de un texto

Amios, diganme si me entienden para explicar en lo que quiero me ayuden
  #3 (permalink)  
Antiguo 08/02/2007, 09:29
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: sacar email de un texto

Haber en una busquedad a la rapida en phpclasses encontre esto.

Email_Parser Segun su Descrip : Permite extraer los email de un archivo de texto, HTML,etc ...

Como es una Clase, hay viene en el ZIP ejemplos para que veas como funciona saludos :P
  #4 (permalink)  
Antiguo 08/02/2007, 12:22
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: sacar email de un texto

Muchas gracias amigo, pero no me sirve porque esa clase lo que hace es de un codigo de un mensaje, divide el mensaje en subject, encabezamiento, mensaje, et. y por supuesto toma como refrerencia palabras claves FROM, SUBJECT, etc.

Yo necesito sacar es solo el email ([email protected]) de una linea de texto, solo eso.
Espero me puedan ayudar.
saludos
  #5 (permalink)  
Antiguo 08/02/2007, 15:31
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: sacar email de un texto

Oh verdad, eso me pasa por solo leer el Titulo, ya que es correcto eso de Parsear Email.

Bueno como no me gusta, dejar a la gente a la mitad de trabajo. Me hize un mini Script que busca los Email de un Texto que esta en un String, y si encuentra un email lo envia a la funcion insertar (en el caso, guardar en una matriz global, tu ves que haces con esa funcion, meter el dato en una bd, etc ...)

Hay que tener ojo, el fin de condicion de termino de un email, a simple viste pense en el espacio, enter, ' , ", : , > , < (hay mas, tu vas completando la lista, ejemplo el signo % que creo que no se puede poner en un nombre de email).

Código PHP:
<?
// Parsear Email


function insertar($email)
{
    
// Esta es la Funcion Donde Insertamos los Email
    // En este Caso la vamos a guardar en un Matriz e Imprimir los Email
    
global $list_de_mail;    
    
$list_de_mail[count($list_de_mail)]=$email;
    
// En tu Caso puedes aqui insertar el email en una bd
}


function 
condicion_de_termino($dato)
{    
     
// Lista de Condiciones de Termino
    
$reg[0]=" ";
    
$reg[1]=":";
    
$reg[2]='"';
    
$reg[3]="'";
    
$reg[4]="<";
    
$reg[5]=">";
    
$reg[6]="\n";
    
$reg[7]="\r";
    
$reg[8]="\t";
    
    for (
$i=0$i count ($reg) ; $i++)
    {
        if ( 
$dato == $reg[$i])
        {
            return (
1);
        }
    }
    return (
0);
}


// El Archivo de Texto lo Cargamos en un String
$texto='Hola juan perez como estan [email protected] pepe [email protected] hola [email protected] [email protected] [email protected] gato [email protected] [email protected] [email protected] [email protected] [email protected] <p><a href="mailto:[email protected]">[email protected]</a></p>
y
<p>[email protected]</p>Aqui va un texto y otras cosas'
;
// El Texto debe tener a lo menos un espacio al comienzo y al final
$texto=" ".$texto." ";




for (
$i=0$i<strlen($texto);$i++)
{
    
    
// Si encontramos el Caracter Arroba
    
if ( $texto[$i] == "@")
    {
        
// Buscamos el Espacio para Atras
        
$t=$i;
        while ( !
condicion_de_termino($texto[$t]) )
        {
            
$t--;    
        }
        
$inicio=$t;
        
$t=$i;
        while ( !
condicion_de_termino($texto[$t]) )
        {
            
$t++;    
        }
        
$fin=$t;
        
$email=substr($texto,($inicio+1),($fin-$inicio-1));
        
insertar($email);
        
        
        
        
    }
    
    
    
}


// Mostramos la Matriz Global $list_de_mail
print_r($list_de_mail);



?>
Me ubiera gustado hacerla con Expresiones Regulares, pero todavia no cach muxo sobre ella, simplemente la hize a la vieja escuela, recorriendo el string caracter por caracter xD xD xD Ojala te sirva Saludos :P
  #6 (permalink)  
Antiguo 08/02/2007, 18:10
 
Fecha de Ingreso: marzo-2004
Mensajes: 186
Antigüedad: 20 años, 1 mes
Puntos: 0
Re: sacar email de un texto

Te seria muy sencillo realizarlo con expresiones regulares, no lo tengo ahora a la mano el codigo, pero con el buscador del foro puede que encuentres mas info
__________________
Software a Medida
voip Locutorios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:48.