Foros del Web » Programando para Internet » PHP »

Datos repetidos en array

Estas en el tema de Datos repetidos en array en el foro de PHP en Foros del Web. Hola!! Tengo un código fuente ($mi_cadena) en la que tengo mucho código, y en el aparecen correos electronicos, puede aparecer en cualquier parte del código, ...
  #1 (permalink)  
Antiguo 22/06/2008, 11:56
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Datos repetidos en array

Hola!!
Tengo un código fuente ($mi_cadena) en la que tengo mucho código, y en el aparecen correos electronicos, puede aparecer en cualquier parte del código, puede salir repetido el mismo correo 1, 2, 3 ... veces.

Busqué un código que me extrayera solo los correos electrónicos, este:

Código PHP:
<?
/Verificar que tengamos algun contenido en el texto
if (!isset($mi_cadena))
{
    echo 
"Debe introducir una txt de texto.";
}
else
{
    
stripslashes($mi_cadena);
    
$exp_email '[_a-z0-9\-]+(\.[_a-z0-9\-]+)*\@[_a-z0-9\-]+(\.[a-z]{1,4})+';

    
//Buscar y extraer los e-mails
    
$encontrado preg_match_all ("/$exp_email/i"$mi_cadena$emailsPREG_SET_ORDER);


//Muestra la lista de e-mails encontrados
      
if ($encontrado)
    {
        foreach (
$emails AS $eml)
        {
            echo 
$eml[0]."<br>";
        }
    }
    else
    {
        echo 
"No se encontró ninguna dirección de correo electrónico";
    }
}
?>
Y obtengo un array como

array ([0] => [email protected] [1]=>[2]=>.com)


así con cada correo que encuentre, pero si aparece el mismo correo 3 veces, aparecerá 3 veces en el array y quiero obtener la lista pero sin que se repita.

He buscado en google, me ha aparecido entre otras este foro (como casi siempre), pone que use

$array_resultante = array_unique ($array_a_tratar);

o

array_flip

pero NADA, no me sale, no sirve eso o no consigo hacerlo funcionar con ese tipo de array, ya que el array tiene 3 partes ... y no es un simple array como
$array[0] = [email protected], $array[1] = [email protected] etc etc....

A ver si alguien me ayuda para conseguir obtener la lista de correos sin repetir.

Gracias!
  #2 (permalink)  
Antiguo 22/06/2008, 16:58
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
De acuerdo Respuesta: Datos repetidos en array

Me contesto yo:

Código PHP:
     
            $con
=0;
            
$estaba 0;
            
$sinrepetir = array();
 
      if (
$encontrado)
    {
        foreach (
$emails AS $eml)
        {
         
          
          
              
$eml[0] = strtolower($eml[0]);      // puede aparecer el mismo correo pero en mayusculas y otro en minusculas

              
if (in_array ($eml[0], $sinrepetir)){
                 
$estaba =$estaba+1//innecesario
                 
}else{
             
$sinrepetir[$con]= $eml[0];
             
$con $con 1;
                                     }
                             
                                     }
    }
    else
    {
        echo 
"No se encontró ninguna dirección de correo electrónico";
    } 

Si alguien ve algún caso en el que esto pueda fallar, que me avise! pero parece que funciona.

Después abrire otro post, que tengo otra duda ahora que esto funciona :)

Gracias to myself.
  #3 (permalink)  
Antiguo 22/06/2008, 21:40
Avatar de killerangel  
Fecha de Ingreso: septiembre-2007
Ubicación: Un punto en el espacio
Mensajes: 592
Antigüedad: 16 años, 7 meses
Puntos: 10
Respuesta: Datos repetidos en array

Lee acerca de array_unique(), eso sera mas facil y hace lo mismo que tu funcion, en codigo algo mas simple. Para evitar la entrada de correos en mayuscula o minuscula puedes converitir todos a minuscula antes de guardar los datos y asi te ahorras tiempo y trabajo.

salu2
__________________
Sueñen... y trabajen por hacer esos sueños realidad... de eso se construye el futuro!!
Me siento entre la ASP-ada y la PHP-red
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 01:40.