Page 1 sur 2
Ecrire dans un fichier
Posté : 21 juin 2008, 22:05
par djtec
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.
Posté : 22 juin 2008, 09:44
par katagoto
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
Posté : 22 juin 2008, 10:02
par djtec
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.
Posté : 22 juin 2008, 10:26
par katagoto
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...
Posté : 22 juin 2008, 10:30
par djtec
Non désolé c'est toujours pareil.
Et c'est quoi la concaténation???
Posté : 22 juin 2008, 11:03
par naholyr
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é

Posté : 22 juin 2008, 11:22
par djtec
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
Posté : 22 juin 2008, 11:34
par katagoto
Facultatif, je suis pas sûr...
Si non tu as essayé avec fil_get_content et file_put_content ???
Posté : 22 juin 2008, 11:39
par Cyrano
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.
Posté : 22 juin 2008, 11:46
par katagoto
[HS] Mais alors doit-on ouvrir la balise si on sait qu'elle n'est pas fermé ?[/HS]
Posté : 22 juin 2008, 11:47
par djtec
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.
++
Posté : 22 juin 2008, 12:48
par katagoto
Je ne fais pas que donner mon avis, je me renseigne, j'essaye de faire avancer le sujet en parallèle...
Posté : 22 juin 2008, 13:49
par Cyrano
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.
Posté : 22 juin 2008, 14:23
par katagoto
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
Posté : 22 juin 2008, 14:24
par djtec
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 ?>