Foros del Web » Programando para Internet » PHP »

Busqueda de cadena especial con expresion regular

Estas en el tema de Busqueda de cadena especial con expresion regular en el foro de PHP en Foros del Web. Hola a todos y feliz año nuevo.. Mi consulta es la siguiente, necesitaria encontrar dentro de un archivo de texto una direccion de correo pero ...
  #1 (permalink)  
Antiguo 19/01/2009, 06:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Busqueda de cadena especial con expresion regular

Hola a todos y feliz año nuevo..

Mi consulta es la siguiente, necesitaria encontrar dentro de un archivo de texto una direccion de correo pero con dos pequeños problemas el primero que el primer caracter del email es el simbolo menor "<" y el ultimo caracter el simbolo mayor ">" vamos que seria algo asi. <[email protected]>

necesitara encontrar esa coincidencia exacta y mas tarde eliminar los simbolos de mayor y menor para dejar la direccion de correo limpia.

Si me hechaseis una mano os lo agradeceria en el alma... yo he conseguido la primera coincidencia con el simbolo menor pero cuando intento buscar el simbolo mayor me da error de ejecucion.

Gracias de antemano.
  #2 (permalink)  
Antiguo 19/01/2009, 07:33
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Busqueda de cadena especial con expresion regular

Muestranos la expresion regular que estas manejando ahora mismo.
  #3 (permalink)  
Antiguo 19/01/2009, 07:39
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

Esta es la expresion que uso actualmente, el problema es que despues de encontrar el simbolo menor, como no puedo encontrar el mayor me incluye en encontrados la direccion de email y toda la morralla que venga despues.

Código:
 ereg("^<[a-zA-Z0-9]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+", $fichero[$j], $encontrados);
Gracias
  #4 (permalink)  
Antiguo 19/01/2009, 08:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Busqueda de cadena especial con expresion regular

Mejor usa otro patron, mira yo para probar use este:

Código PHP:
$string 'esto es un archivo <[email protected]> que contiene, <[email protected]> WTF <[email protected]>da';

preg_match_all("/<([a-zA-Z0-9._-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,})>/"$string$encontrados);

print_r($encontrados[1]); 
EDIT: Validar correo con PHP

Última edición por Ronruby; 19/01/2009 a las 08:24
  #5 (permalink)  
Antiguo 19/01/2009, 08:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

Hola gracias por la respuesta pero Ya probe esa opcion y no me encuentra coincidencias.

necesito que me funcione buscando la cadena dentro de los simbolos de menor y mayor ya que estan pegados al email.

Gracias de todas formas.
  #6 (permalink)  
Antiguo 19/01/2009, 08:26
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Busqueda de cadena especial con expresion regular

Si pruebas el codigo que te acabo de dar, lo imprime correctamente:
Array ( [0] => [email protected] [1] => [email protected] [2] => [email protected] )

Osea, si esta tomando los correos que estan dentro de < y >.

Si a la variable $string le agregas un correo que no esta dentro de < y >, no lo toma.
  #7 (permalink)  
Antiguo 19/01/2009, 08:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

si efectivamente funciona bien pero sigue sin detenerse despues de el simbolo mayor y me sigue guardando el texto que hay despues, ¿sabeis como puedo hacer para que solo recoja de simbolo a simbolo??

Muchas gracias por las respustas.
  #8 (permalink)  
Antiguo 19/01/2009, 08:35
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Busqueda de cadena especial con expresion regular

Dejame ver que contiene tu archivo de texto.
  #9 (permalink)  
Antiguo 19/01/2009, 08:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

En verdad no es un fichero de texto como tal lo que hago es abrir correos electronicos de microsoft mail con extension .eml y dentro busco las direcciones de email que pueda contener.

este seria un ejemplo:

Código:
id 96AA286E1A0; Thu, 15 Jan 2009 22:18:58 +0100 (CET)
Received: from EMAILSERVER (*********************)
	by linux*********** (Postfix) with ESMTP id 93DED827811
	for <[email protected]>; Thu, 15 Jan 2009 22:18:57 +0100 (CET)
Gracias de antemano.
  #10 (permalink)  
Antiguo 19/01/2009, 08:51
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Busqueda de cadena especial con expresion regular

No se porque dices que toma el texto que hay despues:

Código PHP:
<?php

$string 
'id 96AA286E1A0; Thu, 15 Jan 2009 22:18:58 +0100 (CET)
Received: from EMAILSERVER (*********************)
    by linux*********** (Postfix) with ESMTP id 93DED827811
    for <[email protected]>; Thu, 15 Jan 2009 22:18:57 +0100 (CET)'
;

preg_match_all("/<([a-zA-Z0-9._-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]{2,})>/"$string$encontrados);

print_r($encontrados[1]);

?>
Salida:
Cita:
Array ( [0] => [email protected] )
Código PHP:
foreach($encontrados[1] as $correo) {
  echo 
$correo."<br />\n";

  #11 (permalink)  
Antiguo 19/01/2009, 08:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

dejame que revise en condiciones el codigo desde el principio por si estoy metiendo la pata en algun momento pero ami me imprime despues: Thu, 15 Jan 2009 22:18:57 +0100 (CET).

De todas formas como te digo dejame que lo repase y ahora mismo te contesto.

Muchas gracias por las molestias tomadas.
  #12 (permalink)  
Antiguo 19/01/2009, 09:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 65
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Busqueda de cadena especial con expresion regular

Hola Esta solucionado.

Tenia que cambiar algunas cosillas porque al utilizar ahora la funcion preg_match_all en vez de ereg (cambian un poquito lo que da cada una). ahora me da el resultado esperado.

Funciona estupendamente. muchisisisisismaaaasss gracias Ronruby.

Un saludo.
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 12:06.