Caracteres repetidos en las lineas de fichero

Iniciado por Arm144, 24 Abril 2016, 11:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Arm144

Hola. Buenos días.

Estoy aprendiendo a programar en php y me he topado con un ejercicio que por más que lo intento no logro encontrarle la solución y seguro que fallo el alguna boberia de logica.

El ejercicio manda decir si en las lineas de un fichero hay o no caracteres repetidos, es decir la salida por pantalla debería de ser esta:

La línea "hola" NO tiene caracteres repetidos.

La línea "aca aca aca" SI tiene caracteres repetidos.

La línea "alla alla alla" SI tiene caracteres repetidos.

La línea "fichero" NO tiene caracteres repetidos.

Yo tengo esto programado:

<HTML>
<HEAD>
   <TITLE>Repetición de Caracteres</TITLE>
</HEAD>
<BODY>
     <?php
      define("FICH_DATOS", 'FicheroEj3.txt'); 
      $fich = @fopen(FICH_DATOS, 'r') or die("ERROR al abrir el fichero");
      $sRepetidos=0;
      while(!feof($fich)){
         $linea=fgets($fich);
         for($i=0;$i<strlen($linea);$i++){
            for($j=$i+1;$j<strlen($linea);$j++){
               if($linea[$i]==$linea[$j]){
                  $sRepetidos++;
               }
            }
         }
         if($sRepetidos!=0){
            echo "La linea ".$linea." SI tiene caracteres repetidos <br>";
         }else if($sRepetidos==0){
            echo "La linea ".$linea." NO tiene caracteres repetidos <br>";
         }
      } 
   
      fclose ($fich);
?>
</BODY>
</HTML>


Pero me da error ya que la ultima linea me sale que SI tiene caracteres repetidos.

¿Alguna ayuda para este novato? Gracias de antemano.

ivancea96

Código (php) [Seleccionar]
$sRepetidos=0;
Ponlo dentro el bucle while, donde lees líneas. Sinó no va a volver a 0 cuando leas otra línea.