Page 1 sur 1
Place du pointeur
Posté : 02 janv. 2008, 16:06
par nefert@ri
Bonjour,
Comment, lors de l'édition d'un fichier texte à l'aide de php, placer le pointeur après (ou avant) une certaine chaîne de caractère tout en évitant que le texte que l'on ajoute n'efface tout sur son passage ?
Merci de votre aide.
Posté : 02 janv. 2008, 16:19
par @rthur
Bonjour,
Regarde les différents modes possibles pour la fonction fopen()
http://fr.php.net/fopen
Posté : 02 janv. 2008, 16:30
par nefert@ri
Je connais déjà les différents modes, mais le problème c'est que je voudrais placer mon texte
à l'intérieur de la page, juste après le mot événement ou juste avant le point :
Code : Tout sélectionner
1ère ligne
2ème linge
événement
//mon texte devrait se placer ici...
4ème ligne
5ème ligne
//... ou ici
.
Posté : 02 janv. 2008, 16:37
par @rthur
Exact, j'avais pas correctement saisi ce que tu voulais faire, c'est plus clair avec un exemple...
La solution est de récupérer l'ensemble du contenu de ton fichier texte (file_get_contents() ) puis de rechercher la position de là où tu veux faire une insertion (strpos() ) puis de créer la nouvelle chaîne de caractère avec ton contenu inséré à l'endroit voulu (cf concaténation des chaînes de caractères + substr() ) et enfin tu remets tout dans le fichier (file_put_contents() )
Posté : 03 janv. 2008, 18:48
par nefert@ri
Je ne sais pas ce que je fais faux, mais cela ne marche toujours pas. Voici mon code :
$fichier="timelines/chronologie.xml";
$contenu=file_get_contents($fichier);
$a_trouver="<data>";
$position=strpos($contenu, $position);
$fichier_modifie=substr($contenu, $position).$a_ecrire;
file_put_contents($fichier,$fichier_modifie);
Merci malgré tout.
Posté : 04 janv. 2008, 18:58
par nefert@ri
Bonjour,
J'ai enfin réussi !!!! Voici mon code :
Code : Tout sélectionner
$a_ecrire = "aaaa";
$fichier="dadafaf.xml";
$fp=fopen($fichier, "r+");
if ($fp==false) {echo "Une erreur s'est produite lors de la récupération des données de dadafaf.xml."; exit;}
$a_trouver='</data>';
$contenu=file_get_contents($fichier);
$position=strpos($contenu, $a_trouver);
if ($position==false) {echo "Une erreur s'est produite lors du calcul de la position de data."; exit;}
$lecture=fread($fp,
$position);
if ($lecture===false) {echo "Une erreur s'est produite lors de la lecture dadafaf.xml."; exit;}
$fichier_modifie="$a_ecrire</data>";
$ecrire=fwrite($fp,$fichier_modifie);
if ($ecrire==false) {echo "Une erreur s'est produite lors de l'écriture des données dans dadafaf.xml."; exit;}
fclose($fp);
echo "Bravo.";
Merci pour l'aide précieuse.