Analyse de chaine de caractères

Résolu
leod Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   -  
leod Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous

voila mon petit soucis ça devrait aller vite pour la réponse mais je bloque ...
même la page de mon site ne répond plus quand le test s'exécute (je doit boucler dans le vide mais je vois pas)

voici le test qui agit sur une chaine de caractère


<?php
if(isset($_GET["nom"]))
	{
	$nom=$_GET["nom"];
	$taille=strlen($nom);
	$i=0;
	if($taille<2){echo "1";}
	else{
		while($i < $taille)
			{
			if($nom[$i]=='<'){echo "3";}
			else{$i++;}
			}
		echo "0";
		}
	}
else{echo 'rien recu !';}
?>



voila ca plante à chaque essai et je ne sais pas pourquoi
A voir également:

2 réponses

macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.

while($i < $taille) {
   if ($nom[$i]=='<') {
      echo "3";
   }
   else {
      $i++;
   }
}

Si $nom contient un '<', tu te retrouves dans une boucle infinie :
Tu affiches "3", et comme tu n'incrémentes pas $i (qui n'est incrémenté que SINON), tu refais ta boucle WHILE sans modifier $i.

Supprimes le else (en gardant le $i++ :-P ) et ça devrait aller mieux.

Pour éviter ce genre de problème, le mieux est d'éviter les boucles WHILE...
Vu ce que tu veux faire, tu peux essayer de la remplacer par
echo str_repeat( '3', substr_count($nom, '<') );

Répéter l'affichage de '3' pendant (nombre de fois qu'on trouve la chaîne '<' dans $nom)
2
leod Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   2
 
ah ok je me disais que c'était surement un truc à la noix ^^

merci bien ! je suis obligé de faire du while ... j'ai mis la version simplifier ici

encore merci

toujours toi macgawel ^^ +1
1