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 -
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
voila ca plante à chaque essai et je ne sais pas pourquoi
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:
- Analyse de chaine de caractères
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Plus de chaine tv - Guide
- Chaine tnt gratuite sur mobile - Guide
- Analyse composant pc - Guide
2 réponses
Bonjour.
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
Répéter l'affichage de '3' pendant (nombre de fois qu'on trouve la chaîne '<' dans $nom)
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)