[PHP] Boucler sur mon code
Résolu
almaje
-
almaje -
almaje -
Bonjour,
Mon code ouvre un fichier, et dés qu'il trouve le caractère '?' il coupe ce qui a derrière lui jusqu'au prochain espace et le remplace par un input type="text" avec un id de ce qu'il a coupé. ET dans la 2e partie du code il ouvre mon fichier en mode ecriture et met ma variable.
Ce que je souhaite faire c'est de faire une boucle qui parcourt tout mon document et remplace tous les sous-chaines qui sont après un '?' par un input type.
La il s'arrete au premier '?' il ne continue pas sur tout le fichier
Mon code ouvre un fichier, et dés qu'il trouve le caractère '?' il coupe ce qui a derrière lui jusqu'au prochain espace et le remplace par un input type="text" avec un id de ce qu'il a coupé. ET dans la 2e partie du code il ouvre mon fichier en mode ecriture et met ma variable.
Ce que je souhaite faire c'est de faire une boucle qui parcourt tout mon document et remplace tous les sous-chaines qui sont après un '?' par un input type.
La il s'arrete au premier '?' il ne continue pas sur tout le fichier
<?php $fichier="test.txt"; //ouverture en lecture et modification $text=fopen($fichier,'r') or die("Fichier manquant"); // la variable contenu reçoit tout le texte du document $contenu=file_get_contents($fichier, NULL, NULL, 0, 40000); echo $contenu; // chercher la variable a $a = '?'; // retourne la chaine après la chaine cherchée //while (!feof($text)) //{ $v = strstr($contenu,$a); // retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne de la variable contenu extraite en utilisant le séparateur delimiter espace $v = explode( ' ', $v); // Supprimer le caractere '?' $remplace=str_replace('?', '', $v[0]); // Afficher premiere chaire // echo $v[0]; // permet de chercher une sous chaine et de la remplacer. Dans notre cas on chaine la sous chaine $a et on la remplace par la sous chaine $v dans la chaine $contenu $contenuMod=str_replace($v[0], '<input type="text" id="' . $remplace . '">', $contenu); // echo $contenuMod; //} fclose($text); //ouverture en écriture $text2=fopen($fichier,'w+') or die("Fichier manquant"); fwrite($text2,$contenuMod); fclose($text2); ?>
A voir également:
- [PHP] Boucler sur mon code
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
4 réponses
Bonjour...
Alors pour ma part, ça remonte à très loin mais si je ne dit pas de bêtise, tu doit créer ta boucle de manière à ce qu'elle se termine sur le fameux caractère de contrôle "EOF" signifiant End Of file...
Je crois que tu pourra te débrouiller avec ça :
http://oseox.fr/php/traitement-fichier.html
Cordialement,
Alors pour ma part, ça remonte à très loin mais si je ne dit pas de bêtise, tu doit créer ta boucle de manière à ce qu'elle se termine sur le fameux caractère de contrôle "EOF" signifiant End Of file...
Je crois que tu pourra te débrouiller avec ça :
http://oseox.fr/php/traitement-fichier.html
Cordialement,
almaje
je mets le eof mais ça me met une boucle infinie et le programme ne se termine pas
je t'ai répondu sur ton premier post, apparemment tu n'as pas pris le temps de regarder ...
<?php $fichier="test.txt"; fopen($fichier,'r') or die("Fichier manquant"); $contenu=file_get_contents($fichier, NULL, NULL, 0, 40000); preg_match_all( "/\?([^\s]*?)[\s]/" , $contenu, $matches ); print_r($matches); ?>
function add_input($matches){ return '<input type="text" id="'.$matches[1].'">'; } $contenuMod = preg_replace_callback( "/\?([^\s]*?)[\s]/","add_input",$text);
remplace $text par $contenu dans l'exemple
le code fonctionne
$fichier="test.txt"; $text=fopen($fichier,'r') or die("Fichier manquant"); $contenu=file_get_contents($fichier, NULL, NULL, 0, 40000); fclose($text); function add_input($matches){ return '<input type="text" id="'.$matches[1].'">'; } $contenuMod = preg_replace_callback( "/\?([^\s]*?)[\s]/","add_input",$contenu); //ouverture en écriture $text2=fopen($fichier,'w+') or die("Fichier manquant"); fwrite($text2,$contenuMod); fclose($text2);
le code fonctionne