Place du pointeur

nefert@ri
Invité n'ayant pas de compte PHPfrance

02 janv. 2008, 16:06

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 janv. 2008, 16:19

Bonjour,

Regarde les différents modes possibles pour la fonction fopen()
http://fr.php.net/fopen
Quand tout le reste a échoué, lisez le mode d'emploi...

nefert@ri
Invité n'ayant pas de compte PHPfrance

02 janv. 2008, 16:30

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 .

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 janv. 2008, 16:37

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() )
Quand tout le reste a échoué, lisez le mode d'emploi...

nefert@ri
Invité n'ayant pas de compte PHPfrance

03 janv. 2008, 18:48

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.

nefert@ri
Invité n'ayant pas de compte PHPfrance

04 janv. 2008, 18:58

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.