Analyse de chaine de caractères
Résolu
leod
Messages postés
98
Statut
Membre
-
leod Messages postés 98 Statut Membre -
leod Messages postés 98 Statut Membre -
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 spéciaux - Guide
- Plus de chaine tv - Guide
- Analyse composant pc - Guide
- Ascii nombre de caractères - Guide
- Chaine tnt gratuite sur mobile - 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)