Modifier le contenu d'un fichier php

Fermé
arthuro - 18 sept. 2006 à 12:19
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 - 28 mai 2007 à 17:29
salut! j'aimerais que quelqu'un me donne une idée sur un script en php qui pourrait me permettre de modifier une ligne d'un fichier php et y affecter une autre valeur. merci
A voir également:

3 réponses

pierre-yves
12 mai 2007 à 10:16
bonjour
je me pose la même question
j'ai essayé cela, mais ça ne marche pas :
$fp=fopen($page, "w");
$row = 1;
// tout cela ne fonctionne qu'avec un fichier ouvert
if(!is_resource($fp)){return FALSE;}
// pas une socket ou un processus
if (get_resource_type($fp) != 'file'){return FALSE;}
if(!rewind($fp)){return FALSE;}

while (!feof($fp)) {
//retourne la chaîne lue jusqu'à la longueur length - 1 octets, ou bien la fin du fichier, ou encore un retour chariot (le premier des trois qui sera rencontré).
$buffer = fgets($fp, 4096);
if ( $row<10)
{

if (eregi("<META NAME=\"Description\" CONTENT=(.*)\">", $line, $out))
{ echo str_replace('fiche desciptive des arbres','fiche desciptive'.$pages[$page],$buffer );
}
}
$row++;
}
fclose($fp);
return true;
//echo $description;
//echo $description; à la place de return si je veux uniquement écrire le titre
}

-----------
as tu la solution ?
merci
www.lesarbres.fr
0
magicschou Messages postés 2 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 3 décembre 2007
19 sept. 2006 à 10:07
Salut Arthuro,
en PHP t'as des fonctions dèjà faites pour ouvrir un ficher fopen, le lire et ecrire dedans fread fwrite, et aussi des fonctions pour manipuler des chaines de caractères, voilà il faudrait que tu trouves un tutoriel mais bon y'en a plein sur le net
Ciao
-2
TiBou59 Messages postés 22 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 12 mars 2008 4
28 mai 2007 à 17:29
Salut,

J'ai justement travaillé sur cela il y a quelques jours.

Pour cela, il faut que tu parcours ton fichier avec une boucle après l'avoir ouvert en format a+ : lecture et écriture.
Ensuite dans ta boucle, écris un code similaire à celui-ci, je te donne le code que j'ai réalisé, tu n'as plus qu'à l'adapter à ton cas et à t'informer sur les fonctions utilisées (avec le net tu trouves quasiment tout ce que tu veux).

Ce code, le voici :

// on va expliquer ce que l'on cherche en expressions regulieres
$item2 ="C\;N\;K\"([A-Za-z]{1,})....([A-Za-z]{1,})....([A-Za-z]{1,}).{1,}\@";


while (!feof($ficin)) // tant que la fin du fichier n'est pas atteinte
{
$ligne = fgets($ficin, 4096); // Tu lis une ligne

if (ereg($item2, $ligne2, $var2)) // si on trouve $item on l'affecte dans un tableau
{
$tab=explode(" >> ",$var2[0]); // on scinde la chaine selon '>>' en tableau
$SSCP=str_replace('C;N;K"','',$tab[0]); // nettoie la chaine
if(ereg("@$",$tab[1])) // si $tab[1] finit par '@'
{
$SSSCP=str_replace('@','',$tab[1]); // supprime le @
}
else {$SSSCP=$tab[1]; }

// on va s'occuper des SSCP
$SSCP=ereg_replace("é",'é',$SSCP);
$SSCP=ereg_replace("è",'è',$SSCP);
$SSCP=ereg_replace("à",'à',$SSCP);
$SSCP=str_replace(';','',$SSCP);

// on va s'occuper des SSSCP
$SSSCP=ereg_replace("é",'é',$SSSCP);
$SSSCP=ereg_replace("è",'è',$SSSCP);
$SSSCP=ereg_replace("à",'à',$SSSCP);
$SSSCP=str_replace(';','',$SSSCP);


// on va s'occuper des SSSSCP
$SSSSCP=str_replace('@','',$tab[2]); // supprime le @
$SSSSCP=ereg_replace("é",'é',$SSSSCP);
$SSSSCP=ereg_replace("è",'è',$SSSSCP);
$SSSSCP=ereg_replace("à",'à',$SSSSCP);
$SSSSCP=str_replace(';','',$SSSSCP);

echo $SSCP.' - '.$SSSCP.' - '.$SSSSCP;
echo '<br>';


Bien sur ce code effectue juste le remplacement de tes chaines de caractères. Au préalable, il faut que tu ouvres le fichier et que tu le traites.


Cependant, je ne sais pas exactement comment cela marche et je bute sur ce problème : (pendant qu'on y est ;) )

J'ai deux fichiers : l'un en lecture et l'autre en écriture
Appelons le premier $ficin et le second $ficout.
$ficin est le fichier à traiter et $ficout est le fichier que j'ai créé à partir de $ficin. (vous suivez?). En clair, $ficout est le fichier $ficin "épuré".
Le problème est que je n'arrive pas à savoir dans la fonction fwrite quel est le contenu à insérer dans le fichier, le traitement que j'ai donné au dessus est celui à appliquer au fichier en entrée $ficin et à établir dans le fichier de sortie $ficout.
J'ai écrit le bout de code suivant pour l'instant. Pouvez-vous m'en dire plus SVP ?




// fichier en lecture
$ficin = fopen("integration.slk","r"); //ouverture du fichier en lecture
$contenu = fread($ficin, filesize ("integration.slk"));

// fichier en écriture
$ficout = fopen("id_category.txt","r");
$modif = fwrite($ficout, "Contenu à insérer dans le fichier???");


Je me suis permis de poster mon problème dans ce sujet étant donné qu'ils sont liés.

J'espère que ce bout de code, t'auras aidé et que les adeptes du forum pourront m'en dire plus.

A vous tous, un grand merci ! :D
-2