Problème de boucle ?!
Résolu
Benjamincom
Messages postés
235
Date d'inscription
Statut
Membre
Dernière intervention
-
Benjamincom Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
Benjamincom Messages postés 235 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise le script suivant sur ma page principale :
Donc le fgets me permet de récupérer ma page sous la forme de variable et par conséquent me permet de transformer le texte en smileys par exemple. Mais le problème c'est le while qui ne fonctionne pas apparemment, celui-ci permet de détecter si "doc:" est présent dans une de mes pages et d'inclure un fichier si c'est le cas.
Mais sa ne veux pas fonctionner, boucle infini (soit disent).
J'utilise le script suivant sur ma page principale :
$opi = fopen("$page"."-k.php","r+"); while(!feof($opi)) { $l = fgets($opi,255); $content .= $l; } // Transformation des balise du système $define = array('{AFFICHER_EN_LIGNE}'); $defined = array(''); $content = str_replace($define,$defined,$content); // while(ereg('doc:', $content)){ include('include-doc.php'); } echo $content; fclose($opi);
Donc le fgets me permet de récupérer ma page sous la forme de variable et par conséquent me permet de transformer le texte en smileys par exemple. Mais le problème c'est le while qui ne fonctionne pas apparemment, celui-ci permet de détecter si "doc:" est présent dans une de mes pages et d'inclure un fichier si c'est le cas.
Mais sa ne veux pas fonctionner, boucle infini (soit disent).
A voir également:
- Problème de boucle ?!
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
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
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.