Bonjour,
Je souhaiterais donc ajouter une ligne dans un fichier en utilisant php. Voilà ce que je me propose de faire. Je lis le fichier (dans lequel je souhaite insérer une nouvelle ligne) ligne par ligne en utilisant la fonction "file()". Ensuite je recherche l'endroit où je souhaite placer ma nouvelle ligne (avant la ligne qui comporte la balise <title>, je modifie la ligne "repère" en lui ajoutant la nouvelle ligne. Ensuite je relis le tableau et l'envoie vers le fichier (après l'avoir ouvert en écriture et mis à 0) header.php. Concrètement ça donne ça pour le code :
Le fichier que je modifie s'appelle "header.php". J'ai utilisé une boucle for car, d'après ce que j'ai lu, en utilisant "foreach" on travaille sur une copie du tableau et non sur le tableau lui-même.
Or, en appliquant se script, rien ne se passe, même pas de message d'erreur. Par contre d'après mon éditeur de texte dans lequel j'éditais header.php, ce fichier a bien été modifié...
Je ne suis pas sûr d'employer la bonne méthode, alors si vous avez une autre solution, n'hésitez pas à me la communiquer
Merci d'avance pour votre aimable aide
Modifié par jojaba (08 May 2010 - 21:57)
Je souhaiterais donc ajouter une ligne dans un fichier en utilisant php. Voilà ce que je me propose de faire. Je lis le fichier (dans lequel je souhaite insérer une nouvelle ligne) ligne par ligne en utilisant la fonction "file()". Ensuite je recherche l'endroit où je souhaite placer ma nouvelle ligne (avant la ligne qui comporte la balise <title>, je modifie la ligne "repère" en lui ajoutant la nouvelle ligne. Ensuite je relis le tableau et l'envoie vers le fichier (après l'avoir ouvert en écriture et mis à 0) header.php. Concrètement ça donne ça pour le code :
/* Reading the header file line by line to have an array that will be modify... */
$header_lines = file(PUN_ROOT.'header.php');
$lines_number = count($header_lines);
//Reading each line to find the line containing the <title> tag
for ($i = 0; $i < $lines_number; $i++) {
if (strpos($header_lines[$i], '<title>')) {
//Adding a line to include the Metadata core file
$header_lines[$i] = '<?php include \'plugins/dcm/core/dcm.php\'; ?>'.$header_lines[$i];
}
}
/*Opening the header file and replacing all the content by the new content (with the added line)*/
//Deleting content of the file
$fp = fopen(PUN_ROOT.'header.php', 'w');
fwrite ($fp, '');
fclose ($fp);
//Writing back each line of the file
$fp = fopen(PUN_ROOT.'header.php', 'a');
for ($i = 0; $i < $lines_number; $i++) {
fwrite($fp, $header_lines[$i]);
}
fclose ($fp);
/*Replacing the data in the log file dcm.txt*/
$dcm_data = file_get_contents(PUN_ROOT.'plugins/dcm/core/dcm.txt');
$data = explode(';', rtrim($dcm_data));
$install_data = ($data[0] != 0) ? $data[0] : time();
$update_data = time();
$data_plugin_status = 1;
$all_data = $install_data.';'.$update_data.';'.$data_plugin_status;
$fp = fopen(PUN_ROOT.'plugins/dcm/core/dcm.txt', 'w');
fwrite($fp, $all_data);
fclose($fp);
Le fichier que je modifie s'appelle "header.php". J'ai utilisé une boucle for car, d'après ce que j'ai lu, en utilisant "foreach" on travaille sur une copie du tableau et non sur le tableau lui-même.
Or, en appliquant se script, rien ne se passe, même pas de message d'erreur. Par contre d'après mon éditeur de texte dans lequel j'éditais header.php, ce fichier a bien été modifié...
Je ne suis pas sûr d'employer la bonne méthode, alors si vous avez une autre solution, n'hésitez pas à me la communiquer

Merci d'avance pour votre aimable aide

Modifié par jojaba (08 May 2010 - 21:57)