Ecrire dans un fichier

Eléphant du PHP | 451 Messages

21 juin 2008, 22:05

Bonjour,

Voilà je sais écrire dans un fichier mais je cherche juste à écrire un bout de texte à un endroit précis.

Exemple:

mon fichier.php
<?php
/********************************
 *
 *              fichier.txt
 *            --------------
 * 
 *******************************/

code 1
code 2 
code 3

<----- je voudrai réécrire ici

?>
Voilà comment réécrire dans un fichier tout en gardant le ?> à la fin du fichier?

J'ai éssayer de chercher sur google mais tout les codes ne marche pas car ça écrit toujour que au début ou ç la fin donc celà ne vas pas.

Merci d'avance.

Mammouth du PHP | 1668 Messages

22 juin 2008, 09:44

tu récupère le contenu tu fais un str_replace() avec une chaine précise que tu aura inscrit dans ton fichier... Et tu réécrit dans ton fichier
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 451 Messages

22 juin 2008, 10:02

J'ai éssayé ceci
<?php

$f = "fichier.php";

// Lit le contenu du fichier
$fp = fopen ($f, "r");   
$contenu_du_fichier = fgets ($fp, 255);  
fclose ($fp);

// Le texte à insérer
$modif = "include('');";

// Modif du texte
$text = str_replace('?>', '$modif\n\n?>', $contenu_du_fichier);

// Réécriture du fichier
$handle = fopen($f,"w+");

if (is_writable($f)) 
{
    if (fwrite($handle, $text) === FALSE) 
	{
      	echo 'Impossible d\'écrire dans le fichier';
    }
   
    echo 'Ecriture terminé';
   
    fclose($handle);
                   
}
else 
{
	echo 'Impossible d\'écrire dans le fichier';
} 
	
?> 
Mais la ca m'éfface tout car mon fichier ne contient que <?php une fois la réécriture faites.

Mammouth du PHP | 1668 Messages

22 juin 2008, 10:26

Essay ça
$text = str_replace('?>', $modif."\n\n?>", $contenu_du_fichier); 
Pourquoi tout le monde est alergique à la concaténation...

J'aurais fait ça avec file_get_content() et file_put_content() personnellement, mais ça revient au même...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 451 Messages

22 juin 2008, 10:30

Non désolé c'est toujours pareil.

Et c'est quoi la concaténation???

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

22 juin 2008, 11:03

Note : dans les scripts PHP, le "?>" final est totalement facultatif.
Donc il est possible que le problème que tu te poses n'existe pas en réalité ;)

Eléphant du PHP | 451 Messages

22 juin 2008, 11:22

Je pensant que si on fesait <?php on était obligé de fermer cette balise avec ?>.

Car ce fichier que je cherche à faire sera inclue dans toutes mes pages et je pensai que sans le ?> cela provoquerait des erreurs

Mammouth du PHP | 1668 Messages

22 juin 2008, 11:34

Facultatif, je suis pas sûr...

Si non tu as essayé avec fil_get_content et file_put_content ???
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 19672 Messages

22 juin 2008, 11:39

Facultatif, je suis pas sûr...
katagoto, ne te sens pas systématiquement obligé de donner ce qui est ici une opinion. Naholyr indique une règle propre au PHP, pas une idée farfelue lancée au hasard.

La fermeture "?>" n'est obligatoire que si le code PHP doit être suivi d'un code autre comme du HTML par exemple.

Pour ta culture, fais un parcours des classes du Zend Framework, tu verras qu'aucune classe n'a cette fermeture et le ZF n'en fonctionne pas moins bien. Et la raison est assez simple, c'est pour éviter le risque d'envoyer un espace vers le navigateur quand ce n'est pas le moment. Donc non seulement c'est facultatif mais c'est une précaution parfois indispensable.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1668 Messages

22 juin 2008, 11:46

[HS] Mais alors doit-on ouvrir la balise si on sait qu'elle n'est pas fermé ?[/HS]
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 451 Messages

22 juin 2008, 11:47

Ok ben merci Cyrano pour les précision je ne le savais pas alors grâce à ça mon problème est réglé je vais écrire tout mes codes à la fin de mon fichier.

Merci à tous.

++

Mammouth du PHP | 1668 Messages

22 juin 2008, 12:48

Je ne fais pas que donner mon avis, je me renseigne, j'essaye de faire avancer le sujet en parallèle...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 19672 Messages

22 juin 2008, 13:49

Je ne fais pas que donner mon avis...
Trop souvent si et pour ne rien te cacher, ton avis n'intéresse que toi : quelqu'un pose une question technique et attend une réponse technique, ton avis, il s'en cogne;
je me renseigne
Alors pose des questions, n'affirme pas sans savoir
j'essaye de faire avancer le sujet en parallèle...
Pour faire évoluer un sujet, avance des arguments techniques, pas des opinions. Et encore une fois, la plupart du temps, les sujets sont des questions, pas des débats lancés, donc il n'y a rien à faire avancer, il y a un développeur dans la panade qui demande un coup de pouce.

On est pas sur 20mn.fr, les messages creux n'ont pâs leur place ici et ne sont pas les bienvenus : si tu n'as rien à dire d'utile, abstiens-toi, lis et apprends.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1668 Messages

22 juin 2008, 14:23

Bon,

Pourquoi passez vous par la solution de facilité ? Au lieu de résoudre le problème vous cherchez un moyen détourné d'y arriver, être codeur c'est pas se déffiller, c'est résoudre les problèmes*

* être codeur c'est surtout arriver à résoudre une "problématique" (demande du client), mais ce n'est pas en évitant les problème qu'on avance le plus...

Sur ce je considère le débat clos...

PS : il y a toujours plusieurs manières de résoudre une problématique, donc en quelques sortes on donne sont avis sur comment la résoudre...

PPS : La concaténation c'est la juxtaposition de deux entités à l'aide d'un . en PHP
Modifié en dernier par katagoto le 22 juin 2008, 14:26, modifié 1 fois.
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 451 Messages

22 juin 2008, 14:24

Juste une question Cyrano

si dans mon 1er fichier je fais:
<?php

// la je place mon code php
dans le 2eme
<?php

include(''); // j'inclue le fichier 1

// La mon autre code
?>
Puis dans le 3eme
<?php

include(''); // j'inclue le fihcier 2

// mon autre code

include(''); // j'inclue le fichier 4

?>
Le fichier 4
<?php

// mon code php

?>

Si je réalise des pages comme ceci celà ne risque pas de bugger alors???

en sachant que le fichier 1 il n'y a pas la balise de fin ?>