Problème de boucle ?!
Résolu/Fermé
Benjamincom
Messages postés
235
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
19 septembre 2021
-
9 janv. 2009 à 18:23
Benjamincom Messages postés 235 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 19 septembre 2021 - 9 janv. 2009 à 20:07
Benjamincom Messages postés 235 Date d'inscription vendredi 21 décembre 2007 Statut Membre Dernière intervention 19 septembre 2021 - 9 janv. 2009 à 20:07
4 réponses
Bonjour
Normal que ça fasse une boucle infinie.
La condition dans le while ne change jamais. Donc si elle est vraie une fois, elle l'est toujours. Donc il n'y a aucune raison de sortir du while.
Tu as besoin d'un simple test ici, l'instruction if suffira
Normal que ça fasse une boucle infinie.
La condition dans le while ne change jamais. Donc si elle est vraie une fois, elle l'est toujours. Donc il n'y a aucune raison de sortir du while.
Tu as besoin d'un simple test ici, l'instruction if suffira
Benjamincom
Messages postés
235
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
19 septembre 2021
61
9 janv. 2009 à 19:18
9 janv. 2009 à 19:18
Non le if ne vas pas car il faut que le code se répété selon le nombre de fois qu'il a detecté "doc:" dans la variable. Sinon ce code ne sert à rien.
Pourtant, dans ton premier message, tu ne parlais d'inclure qu'une fois. M'enfin.
Il suffit, quand tu as trouvé don doc: une fois, de "couper" le début de ton $content de façon à faire disparaître le doc qui a déjà été trouvé. Actuellement, tu retrouves toujours le même à chaque boucle, alors elle ne s'arrête jamais.
Pour ça, il vaut mieux utiliser la fonction strpos qui te dit où ton 'doc:' a été trouvé :
while( ($x = strpos($content,'doc:'))!==false){
include('include-doc.php');
$contents=substr($content,$x+1); // coupe après le 'd'
}
Le !== n'est pas une erreur.
Il suffit, quand tu as trouvé don doc: une fois, de "couper" le début de ton $content de façon à faire disparaître le doc qui a déjà été trouvé. Actuellement, tu retrouves toujours le même à chaque boucle, alors elle ne s'arrête jamais.
Pour ça, il vaut mieux utiliser la fonction strpos qui te dit où ton 'doc:' a été trouvé :
while( ($x = strpos($content,'doc:'))!==false){
include('include-doc.php');
$contents=substr($content,$x+1); // coupe après le 'd'
}
Le !== n'est pas une erreur.
Benjamincom
Messages postés
235
Date d'inscription
vendredi 21 décembre 2007
Statut
Membre
Dernière intervention
19 septembre 2021
61
9 janv. 2009 à 20:07
9 janv. 2009 à 20:07
A beh merci je ne connaissais pas cette fonction ^^
Ca marche parfaitement bien ;)
Ca marche parfaitement bien ;)