Foros del Web » Programando para Internet » PHP »

Expresion Regular para obtener un dato con php

Estas en el tema de Expresion Regular para obtener un dato con php en el foro de PHP en Foros del Web. Hola actualmente estoy tratando de obtener una información de un TXT, ejemplo de el txt. <[email protected]>: connect to test.com[00.00.00.0]:0: Connection timed out [email protected] offset=00000 status=0.0.0 ...
  #1 (permalink)  
Antiguo 28/01/2013, 08:56
ERR
 
Fecha de Ingreso: febrero-2012
Ubicación: Escazu
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 1
Pregunta Expresion Regular para obtener un dato con php

Hola actualmente estoy tratando de obtener una información de un TXT, ejemplo de el txt.

<[email protected]>: connect to test.com[00.00.00.0]:0: Connection timed out
[email protected]
offset=00000
status=0.0.0
action=delayed
reason=connect to test.com[00.00.00.0]:0: Connection timed out


<[email protected]>: connect to e-mail.com[00.00.00.0]:0: Connection timed out
[email protected]
offset=00000
status=0.0.0
action=delayed
reason=connect to test234.com[00.00.00.0]:0: Connection timed out

De este archivo tengo que obtener el correo que esta en < > en una variable y el resto del contenido en otra variable.

Para obtener dicha información tengo hacerlo con expresiones regulares, hasta el momento he realizado esto pero no obtengo un resultado correcto.

Código PHP:
$aDatos = array(); 

$contenido file("email_errors.txt"); 

$i 0
$patron '/<(.+)>/';
foreach(
$contenido as $c){ 
     
$aDatos[$i]['email'] = preg_match_all($patron,$c );
    
$i++; 


foreach(
$aDatos as $d){ 
     
     echo 
'<pre>';
        echo(
$d['email']);
     echo 
'</pre>';
     

Aún no se si el patrón que tengo esta bueno, se que hay mucha info en el foro, pero no he visto algo similar en el cuál yo me pueda apoyar.
  #2 (permalink)  
Antiguo 28/01/2013, 09:26
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Expresion Regular para obtener un dato con php

Código PHP:
Ver original
  1. $cadena = '<[email protected]>: connect to test.com[00.00.00.0]:0: Connection timed out
  2.     offset=00000
  3.     status=0.0.0
  4.     action=delayed
  5.     reason=connect to test.com[00.00.00.0]:0: Connection timed out
  6.  
  7.     <[email protected]>: connect to e-mail.com[00.00.00.0]:0: Connection timed out
  8.     offset=00000
  9.     status=0.0.0
  10.     action=delayed
  11.     reason=connect to test234.com[00.00.00.0]:0: Connection timed out';    
  12.     preg_match_all('/\<(.+)\>/', $cadena, $coincidencias); 
  13.     foreach ($coincidencias[1] AS $email) {
  14.         #En coincidencias[0] están las coincidencias completas, en concidencias[1] sólo las de los paréntesis
  15.         echo $email;
  16.         echo "<br />";
  17.     }

¿Para qué quieres extraer el resto del texto? Si es para substituír los e-mail puedes usar preg_replace sino también puedes usar preg_replace con esa cadena y substituirlo por "" y ya te queda el texto sin los email.

Saludos
  #3 (permalink)  
Antiguo 28/01/2013, 09:44
ERR
 
Fecha de Ingreso: febrero-2012
Ubicación: Escazu
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Expresion Regular para obtener un dato con php

Cita:
Iniciado por alyciashape Ver Mensaje
Código PHP:
Ver original
  1. $cadena = '<[email protected]>: connect to test.com[00.00.00.0]:0: Connection timed out
  2.     offset=00000
  3.     status=0.0.0
  4.     action=delayed
  5.     reason=connect to test.com[00.00.00.0]:0: Connection timed out
  6.  
  7.     <[email protected]>: connect to e-mail.com[00.00.00.0]:0: Connection timed out
  8.     offset=00000
  9.     status=0.0.0
  10.     action=delayed
  11.     reason=connect to test234.com[00.00.00.0]:0: Connection timed out';    
  12.     preg_match_all('/\<(.+)\>/', $cadena, $coincidencias); 
  13.     foreach ($coincidencias[1] AS $email) {
  14.         #En coincidencias[0] están las coincidencias completas, en concidencias[1] sólo las de los paréntesis
  15.         echo $email;
  16.         echo "<br />";
  17.     }

¿Para qué quieres extraer el resto del texto? Si es para substituír los e-mail puedes usar preg_replace sino también puedes usar preg_replace con esa cadena y substituirlo por "" y ya te queda el texto sin los email.

Saludos
Wow genial amigo, gracias, con respecto al texto restante, es que tengo que almacenar todo en BD ejemplo "email" "texto restante" porque así me lo están solicitando...

Última edición por ERR; 28/01/2013 a las 09:51
  #4 (permalink)  
Antiguo 28/01/2013, 11:36
ERR
 
Fecha de Ingreso: febrero-2012
Ubicación: Escazu
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Expresion Regular para obtener un dato con php

Como puedo recuperar también el resto de texto en una variable al igual que el email para introducirlo en BD.

Etiquetas: Ninguno
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 10:43.