Foros del Web » Programando para Internet » PHP »

Recursividad de un correo

Estas en el tema de Recursividad de un correo en el foro de PHP en Foros del Web. Hola amigos. Bueno presentarme que soy un programador ultrajunior y que siempre ingreso a este foro para sacar ideas y cositas para la mente ( ...
  #1 (permalink)  
Antiguo 15/07/2010, 09:47
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Busqueda Recursividad de un correo

Hola amigos.

Bueno presentarme que soy un programador ultrajunior y que siempre ingreso a este foro para sacar ideas y cositas para la mente ( No de ese tipo de cosas que se imaginan )... Codigos que no conosco y implementarlos.

Bueno dar las gracias por eso ya que nunca lo habia echo y era un simple observador.

Ahora al job.

Tengo un ingreso de emails validados en el ingreso, lo que necesito hacer ahora es que el ingreso de "el" o "los" correos sean verificados y ingresados por ",", ";"," ";", " " . Esto lo tenia solamente implementado con "," atravez de un explode (",",$email ) y despues lo pasaba por un forech, pero ahora quiero implementar mas.

invesitgando me dijeron que utilizara recursividad, el cual estoy estudiando pero no encuentro aun la logica para aplicarlo.

Por favor maestros de la logica guienme en mi camino a la solucion :)...

PD: No entiendo la logica porque lo que he visto por net se refiere a solo factoriales y potencias.


Tengo una idea el cual lo uso de conejillo Pero nada funciona.

LA idea es en un text ingresar : [email protected] , [email protected] ; , [email protected] , [email protected]

estoy probando con identificar solo las "," y esto es lo que he echo ( No se rian jaja )

Código PHP:
<?php
// Varibale con parámetros requeridos
$email '[email protected], c@c, [email protected]';

function 
recursivaIngreso($email)
{         

    echo 
'<pre>';
    
print_r ($email);
    echo 
'</pre>';
    
$pos = (strrpos($email","));
    if(
$pos != false) {
        
$arreglo_a explode($email,",");
        
$cont 0;
            foreach (
$arreglo_a as $email) {
            
$cont ++;
// Condicion para seguir a la siguiente sunfuncion ?
                
$email=recursivaIngreso($email);
            echo 
'<pre>'
            
print_r ($email);
            echo 
'</pre>';
            }
            return 
$email;
    }
}

    
?>
Bueno leere sus comentarios y pasare muy seguido, Saludos.
  #2 (permalink)  
Antiguo 19/07/2010, 10:49
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Recursividad de un correo

Respondiendo un poco el tema :

Bueno, entro al primer if y arregle unas tonteritas que tenia el codigo y por eso no me llegaban variables, algo muy tonto de mi parte.

Creo que toy cerca pero algo andá mal.

Que puedo hacer para que el retorno me de todos los emails limpios ? que me falta ? ... Esto es lo que logre hacer.

Código PHP:
Ver original
  1. <?php
  2. // Varibale con parámetros requeridos
  3. $muestra=recursivaIngreso($email);
  4.  
  5. print_r ($muestra)."</br>";
  6.  
  7.  
  8. function recursivaIngreso($email)
  9. {      
  10. //Busca los correos con ,
  11.     $pos = (strstr($email, ","));
  12.     // si es existe condicion
  13.     if($pos != false) {
  14.         echo '<pre>';
  15.         print_r ($email);
  16.         echo '</pre>';
  17.         //Separo los correos con ,
  18.         $arreglo_a = explode(",",$email);
  19.         echo '<pre>';
  20.         print_r ($arreglo_a);
  21.         echo '</pre>';
  22.         // los repesado de 1 para leer si solo son ,
  23.             foreach ($arreglo_a as $email) {
  24.            
  25.             $email=recursivaIngreso($email);
  26.             }
  27.             return $email;    
  28.     //Cumple la siguiente condicion              
  29.     } else if ($pos=(strstr($email, ";"))){
  30.             $pos=(strstr($email, ";"));
  31.             if($pos != false) {
  32.             echo '<pre>';
  33.             print_r ($email);
  34.             echo '</pre>';
  35.             $arreglo_b = explode(";",$email);
  36.             echo '<pre>';
  37.             print_r ($arreglo_b);
  38.             echo '</pre>';
  39.                 foreach ($arreglo_b as $email) {
  40.                 echo $email;
  41.                 $email=recursivaIngreso($email);
  42.                 }
  43.                 return $email;  
  44.         }
  45.     }
  46.      else if ($pos=(strstr($email, " "))){
  47.             $pos=(strstr($email, " "));
  48.             if($pos != false) {
  49.             echo '<pre>';
  50.             print_r ($email);
  51.             echo '</pre>';
  52.             $arreglo_b = explode(" ",$email);
  53.             echo '<pre>';
  54.             print_r ($arreglo_b);
  55.             echo '</pre>';
  56.                 foreach ($arreglo_b as $email) {
  57.                 echo $email;
  58.                 $email=recursivaIngreso($email);
  59.                 }
  60.                 return $email;  
  61.         }
  62.     }  
  63. }
  64. ?>

y esto es lo que sale en pantalla

[email protected],[email protected],[email protected] [email protected];[email protected]

Array
(
[0] => [email protected]
[1] => [email protected]
[2] => [email protected] [email protected];[email protected]
)

[email protected] [email protected];[email protected]

Array
(
[0] => [email protected] [email protected]
[1] => [email protected]
)

[email protected] [email protected]

[email protected] [email protected]

Array
(
[0] => [email protected]
[1] => [email protected]
)

[email protected]@[email protected]

[email protected]

Array
(
[0] => [email protected]
[1] =>
)

[email protected]

Necesito esos valores guardarlos en un array... Todo los sanos pero como ??...

tengo una idea y se lo que esta pasando ( o creo saber ) .. cada ves que retorno email me pisa el anterior, cumple la funcion pero mal.

$email = $arreglo_a + $arreglo_b + arreglo_c

mm ojala me entiendan... de a poco iré subiendo mas información y como voy con esto..

Saludos
  #3 (permalink)  
Antiguo 30/07/2010, 08:59
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Recursividad de un correo

Hola amigos...

Sigo con mi trabajo xD ... Bueno despues de probar muchas cosas y distintos codigos creo que voy por el lado correcto y muy cerca poder lograr el objetivo de esta funcion.

Pasa lo siguiente.

Problemas.

Al comienzo del codigo necesito identificar si la variable ingresada venga con , espacio o ; .. Cada variable se reconoce con un strstr que busca en el elemento un caracter definido. (,), el problema abarca cuando ingreso una variable separada diferente al lo requeri al comienzo del codigo.

ejemplo :

[email protected] [email protected]

o s es separada por ; .


lo importante de esta funcion es que me devuelva el valor limpio de un correo o n correos. adjuntados por n caracteres.

Código PHP:
Ver original
  1. <?php
  2. include_once('utils/isemail-read-only/is_email.php');
  3.  
  4. // Varibale con parámetros requeridos
  5. recursivaIngreso($email);
  6.  
  7. function recursivaIngreso($email)
  8. {    
  9. //Busca los correos con ,
  10.     if($pos = (strstr($email, ","))){
  11.     // si es existe condicion
  12.         if($pos != false) {
  13.             //Separo los correos con ,
  14.             $arreglo_a = explode(",",$email);
  15.             // los repesado de 1 para leer si solo son ,
  16.             foreach ($arreglo_a as $email) {
  17.             // Compruebo que lo separado sea un correo
  18.                 if(is_email($email)) {
  19.             // Ingreso en Correo en el array de las ,  
  20.                 $arreglo_coma = $email ;
  21.                 echo "<pre>";
  22.                 print_r ($arreglo_coma);
  23.                 echo "</pre>";
  24.             // Los Correos no validos van al siguiente if  
  25.                 } else {
  26.                 $arreglo_sucio= $email;
  27.                 }
  28.             }                                        
  29.         }
  30.     }
  31.     // compruebo lo que trae el arreglo sucio como variable ( no array ).
  32.      if($pos=(strstr($arreglo_sucio, ";"))){
  33.         if($pos != false) {
  34.         $arreglo_b = explode(";",$arreglo_sucio);          
  35.             foreach ($arreglo_b as $email) {
  36.                 if(is_email($email)) {
  37.                 $arreglo_puntoycoma = $email;  
  38.                 echo "<pre>";
  39.                 print_r ($arreglo_puntoycoma);
  40.                 echo "</pre>";
  41.                 } else {
  42.                 $arreglo_sucio= $email;
  43.                 }
  44.             }
  45.         }  
  46.     }
  47.     if ($pos=(strstr($arreglo_sucio, " "))){
  48.         if($pos != false) {
  49.         $arreglo_c = explode(" ",$arreglo_sucio);
  50.             foreach ($arreglo_c as $email) {
  51.                 if(is_email($email)) {
  52.                 $arreglo_espacio = $email;  
  53.                 echo "<pre>";
  54.                 print_r ($arreglo_espacio);
  55.                 echo "</pre>";
  56.                 } else {
  57.                 $arreglo_sucio= $email;
  58.                 echo "<pre>";
  59.                 print_r ($arreglo_sucio."mal");
  60.                 echo "</pre>";
  61.                 }
  62.             }  
  63.         }
  64.     }      
  65.     if($emails=array_merge($arreglo_a,$arreglo_b,$arreglo_c)){
  66.     echo "<pre>";
  67.     print_r ($emails);
  68.     echo "</pre>";
  69.     foreach ($emails as $email)
  70.         if (is_email($email)){
  71.         echo $email."</br>";   
  72.         }else{
  73.         echo "Esto no es un correo, Retorna a el codigo".$email."</br>";
  74.         }  
  75.     }
  76.    
  77. }      
  78. ?>

Respuesta :

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

Array
(
[0] => [email protected]
[1] => [email protected]
[2] => [email protected] [email protected];[email protected]
[3] => [email protected] [email protected]
[4] => [email protected]
[5] => [email protected]
[6] => [email protected]
)

[email protected]
[email protected]
Esto no es un correo, Retorna a el [email protected] [email protected];[email protected]
Esto no es un correo, Retorna a el [email protected] [email protected]
[email protected]
[email protected]
[email protected]

lo importante es lo que muestra abajo porque con eso es lo que trabajo yo, lo demas es para demostrar que estoy retornando son pruebas solamente.

yo necesito retornar los que no son correos y volver a a pasarlos por el codigo, ¿ para que hago esto si ya esta reconocido ? Para reconocer la diferencia entre , y . o espacios... si pongo un espacio en el primer correo. es donde esta el error.

Si se repiten los correos no hay problema por que se ingresan como campo unico.

Que puedo hacer ?..

El que me quiera ayudar [email protected] es mi correo y mi msn.

Srs. Moradores ¿Podrian cambiar el titulo a uno mas cerca de lo requerido?. creo queme equivoque con el titulo

Última edición por aquilesnake; 30/07/2010 a las 09:06

Etiquetas: correo, recursividad
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 17:41.