Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Duda con cadenas de texto

Estas en el tema de Duda con cadenas de texto en el foro de PHP en Foros del Web. Muy buenas, lo primero gracias por vuestro tiempo. Tengo una duda sobre como comparar cadenas de texto, necesito comparar varias cadenas de textos que contienen ...
  #1 (permalink)  
Antiguo 06/02/2014, 08:12
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Pregunta Duda con cadenas de texto

Muy buenas, lo primero gracias por vuestro tiempo.

Tengo una duda sobre como comparar cadenas de texto, necesito comparar varias cadenas de textos que contienen emails y comprobar que en ambas no se introducen dos emails iguales.

la verdad es que no se ni por donde empezar, asi que cualquier ayuda es bien recivida.
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #2 (permalink)  
Antiguo 06/02/2014, 08:25
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 5
Respuesta: Duda con cadenas de texto

No-Name

como no encuentro mas especificacion, te propongo que almacenes la informacion de las direcciones EMAIL en una base de datos. luego realices consultas para verificar que direccion esta repetida mediante la siguiente consulta

Código MySQL:
Ver original
  1. select email,count(*)
  2. from tu_tabla
  3. having count(*) > 1
  4. group by email

saludos
  #3 (permalink)  
Antiguo 06/02/2014, 08:35
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Duda con cadenas de texto

La idea era compararlos antes de entrar en la base de datos los correos, yo ando googleando y creo que lo que más se acerca a lo que deseo es: strpos()

Voy a ver si entiendo como usarla y más importante como introducirla entre los for y las mierdas que tiene el script.

Gracias por tu tiempo.
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #4 (permalink)  
Antiguo 06/02/2014, 08:49
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con cadenas de texto

No entiendo bien tu problema.
Si lo que estás buscando es que no se ponga dos veces el mismo email, lo único que tienes que hacer es un bucle if básico.
Código PHP:
$email1="[email protected]";
$email2="[email protected]";
if(
$email1==$email2){
//son iguales
}else{
//son distintos

  #5 (permalink)  
Antiguo 06/02/2014, 08:59
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Duda con cadenas de texto

a ver, voy a hacer version extendida de la explicacion.

En el formulario genero X (donde x es un numero indicado por el usuario) input con el name="email[]" y dentro de estos se escriben los emails deseados separados por un espacio y se envian contra la aplicacion.

Bien cuando la aplicacion los recibe los tiene que insertar en la base de datos, para ello antes de esto hacemos un explode y obtenemos los distintos emails, como metodo de control antes de insertarlos, para que no se inserten a lo loco mi idea era comparar por ejemplo
email[0] contra email[1] email[2]...
y que despues email[1] se comparara con email[2] y asi sucesivamente para comprobar que ninguna cadena entre si tiene el mismo email en ella.

no se si he aclarado la cosa o la he liado mas...
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #6 (permalink)  
Antiguo 06/02/2014, 09:31
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Duda con cadenas de texto

Pues a ver si tu ya estás usando un:

Código HTML:
Ver original
  1. <input type="text" name="email[]" />

Vas a recibir ya un array, así que el explode sobra; si lo que quieres es eliminar los emails repetidos usa array_unique.

Igual si lo que recibes es una cadena del tipo:


Puedes hacer igual algo como esto:

Código PHP:
Ver original
  1. $mails = explode(';', $mails);
  2.  
  3. $mails = array_unique($mails);

Como ves, es el mismo proceso.

Si quieres general algún tipo de alerta al usuario por colocar emails repetidos, ya deberías de trabajar con array_map.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 06/02/2014, 09:48
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Duda con cadenas de texto

Muchas gracias, creo que vamos por el buen camino y vot ahora a mirar la opcion que arriba me comentais, de todas formas por clarificar yo lo que queria era

por ejemplo:
Código PHP:
<?php
$valor
[0]='Perro Verde Gato Miau Pepino';
$valor[1]='Raton Llavero Movil Cama Casa';
$valor[2]='Llavero Cuna Coniak Conan Perro';
Eso seria lo que recibo, mi concepto es, como se podria hacer para que $valor[0] se comparara con valor[2] y saque por pantalla algo en plan que en el 0 y el 2 hay valores repetidos, sin usar explode.

y si esto no se puede hacer, lo logico seria usar los arrays y comparar los valores de dentro de uno con los de dentro del otro, pero eso complejizaria mucho todo el proceso de captura de datos y validacion creandome muchos quebraderos de cabeza...
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.

Última edición por No-NaMe; 06/02/2014 a las 09:57
  #8 (permalink)  
Antiguo 06/02/2014, 10:51
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda con cadenas de texto

Se puede hacer con strpos(); pero creo que inevitablemente vas a necesitar usar arrays, porque si no, ¿cómo vas a saber qué valores buscar?

Imagino que tienes un array que se llama $valor, y que guarda los strings donde hay que buscar las palabras repetidas.

Código PHP:
for($i=0;$i<count($valor);$i++){
     for(
$j=0;$j<count($valor);$j++){
           if(
$i!=$j){
                
$abuscar=explode(" ",$valor[$i]);
                
$buscado=explode(" ",$valor[$j]);
                for(
$k=0;$k<count($abuscar);$k++){
                        if(
in_array($abuscar[$k]),$buscado){
                               echo 
"El valor está repetido en dos de los arrays";
                        }
                 }
           }
     }

Sé que son un montón de bucles, pero en el fondo no es muy complicado.
Recorre todos los valores de tu array $valor, comparando (siempre que no sean el mismo) si existen valores duplicados.
  #9 (permalink)  
Antiguo 06/02/2014, 11:16
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Duda con cadenas de texto

El Muchas gracias a todos, esta opcion, creo que es la mas correcta
(Aqui mi adapatacion para que me funcione)
Código PHP:
for($i=0;$i<count($_POST['correos']);$i++)
            {     
               for(
$j=0;$j<count($_POST['correos']);$j++)
               { 
                    if(
$i!=$j)
                    { 
                        
$abuscar=explode(" ",$_POST['correos'][$i]); 
                        
$buscado=explode(" ",$_POST['correos'][$j]);
                        for(
$k=0;$k<count($abuscar);$k++)
                        { 
                            if(
in_array($abuscar[$k]),$buscado)
                            { 
                               echo 
"El valor está repetido en dos de los arrays";
                            } 
                        }
                    }
                }
            } 
Pero no se por que en la line
Código PHP:
if(in_array($abuscar[$k]),$buscado
me dice que la , esta mal (ya sabeis tipo mensaje unespected "," on line X ), y la verdad es que estoy revisando el manual y a mi me parece correcto como esta escrito, alguien sabe por que ?
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #10 (permalink)  
Antiguo 06/02/2014, 11:18
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Duda con cadenas de texto

Está mal cerrado

Código PHP:
Ver original
  1. //MAL
  2. if(in_array($abuscar[$k]),$buscado)
  3.  
  4. //BIEN
  5. if(in_array($abuscar[$k],$buscado))

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 07/02/2014, 07:07
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
De acuerdo Respuesta: Duda con cadenas de texto

Muchisimas gracias a todos, el problema esta resuelto (ahora a ver donde se cambiavaba tema a solved...)

Y gracias de nuevo al que puso la correccion por que yo la probe pero estama en modo burro y se me olvido cerrar el parentesis 2 veces.

Chicos la verdad es que da gusto con gente como vosotros, teneis todos los aportes que han dado valor a esta discusion votados como positivos, gran trabajo.
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.

Etiquetas: cadenas
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 14:48.