Foros del Web » Programando para Internet » PHP »

Eliminar caracteres repetidos

Estas en el tema de Eliminar caracteres repetidos en el foro de PHP en Foros del Web. Hola a tod@s tengo este script que me reemplaza las repeticiones de una letra por solo una, en este ejemplo si hay entre 3 a ...
  #1 (permalink)  
Antiguo 01/11/2012, 05:14
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Pregunta Eliminar caracteres repetidos

Hola a tod@s tengo este script que me reemplaza las repeticiones de una letra por solo una, en este ejemplo si hay entre 3 a 100 letras "a" las reemplaza por una unica letra "a".

<?php
$cadena_original="Se trataaaaaaa que si reeeeeeeepetimos una leeeeeeetra mas de 2 veces la reemplaze por una solaaaaaaa";
$buscar = "a{3,100}";
$sustituir="a";
$delimitador="/";
$modificador="i";
$patron=$delimitador.$buscar.$delimitador.$modific ador;
$cadena_resultante=preg_replace ($patron,$sustituir,$cadena_original);
print "El resultado será: <b>".$cadena_resultante."</b>";
?>

Mi pregunta es: como debo modificar el script para que me funcione con mas letras, numeros o caracteres ??

Saludos y gracias a tod@s
__________________
Electricistas 24 Horas
  #2 (permalink)  
Antiguo 01/11/2012, 10:38
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Eliminar caracteres repetidos

se llama expresiones regulares.

aki puedes obtener mas informacion

http://www.php.net/manual/es/referen...ern.syntax.php

Buena suerte
  #3 (permalink)  
Antiguo 01/11/2012, 10:59
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Respuesta: Eliminar caracteres repetidos

Gracias, pero el problema es que no se como aplicarlo para que funcione.
__________________
Electricistas 24 Horas
  #4 (permalink)  
Antiguo 01/11/2012, 12:41
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Eliminar caracteres repetidos

No sé si se pueda hacer en un sólo patrón, se me ocurre utilizar un array de patrones y sustituciones para todos los caracteres que quieras reemplazar:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $cadena_original = "Se trataaaaaaa que si reeeeeeeepetimos una leeeeeeetra mas de 2 veces la reemplaze por una solaaaaaaa";
  4.  
  5. $patrones = array('@a{3,}@i', '@e{3,}@i');
  6. $sustituciones = array('a', 'e');
  7.  
  8. echo preg_replace($patrones, $sustituciones, $cadena_original);
  9.  
  10. //Se trata que si repetimos una letra mas de 2 veces la reemplaze por una sola

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 01/11/2012, 13:06
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Respuesta: Eliminar caracteres repetidos

Vale gracias, de momento es mas de lo que tengo, pero claro quiero hacerlo con todos los caracteres posibles, imagino que no se podra.
Pero se podria agrupandolos en 3 grupos para reducir el script, por ejemplo un grupo de letras, uno de numeros y otro de caracteres especiales ??
Los tres grupos en caso de encontrar mas de 3 caracteres iguales es reemplazarlo por un espacio, pero quiero englobar todos los caracteres que se puedan tipear.

Gracias
__________________
Electricistas 24 Horas
  #6 (permalink)  
Antiguo 01/11/2012, 13:37
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Respuesta: Eliminar caracteres repetidos

He probado esto:

$buscar = "[-+=_*]{3,}";

Pero si entre [] pongo mas de 5 caracteres ya no me funciona.
__________________
Electricistas 24 Horas
  #7 (permalink)  
Antiguo 01/11/2012, 13:40
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Eliminar caracteres repetidos

OK aki te dejo esta funcion ojala te sirva

Código PHP:

function chequearPatron($cadena, array $caracteres){

       if(
is_array($caracteres))
       {   
            
$caracteresEncontrados = array();
            
            foreach(
$caracteres as $value)
            {
                if(
strstr($cadena$value))
                {
                    
$caracteresEncontrados[] = $value;
                }
            }
            return 
$caracteresEncontrados;
            
        } else {
               if(
strstr($cadena$caracteres))
                {
                    return 
$caracteres;
                }
        }
        return 
false;
}

$encontrados chequearPatron('buscar caracteres en esta cadena', array('cadena''f''a'));

echo 
'caracteres encontrados: <br />'
foreach(
$encontrados as $enc)

    echo 
'"' $enc '" ';

espero te ayude

buena suerte
  #8 (permalink)  
Antiguo 01/11/2012, 14:13
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Respuesta: Eliminar caracteres repetidos

Gracias, pero no me vale de mucho la verdad, gracias por tu ayuda.
__________________
Electricistas 24 Horas
  #9 (permalink)  
Antiguo 02/11/2012, 01:08
Avatar de williamhpf  
Fecha de Ingreso: mayo-2009
Mensajes: 144
Antigüedad: 14 años, 11 meses
Puntos: 8
Respuesta: Eliminar caracteres repetidos

Lo solucione con javascript, en vez de eliminar duplicados, lo que hago es evitar que se creen los mismos.

Gracias a todos por vuestra ayuda e interes.

Saludos
__________________
Electricistas 24 Horas

Etiquetas: caracteres, repetidos
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 15:54.