joindre des fichiers en PHP
11 sujets de 1 à 11 (sur un total de 11)
-
Tu ouvres tes deux fichiers, tu les lis et tu concatènes les chaines :
$filename = "./fichier1.txt";
$handle = @fopen($filename,"r") or die("
Erreur : Fichier introuvable
");
$fichier1 = fread ($handle, filesize ($filename));
fclose ($handle);
$filename = "./fichier2.txt";
$handle = @fopen($filename,"r") or die("
Erreur : Fichier introuvable
");
$fichier2 = fread ($handle, filesize ($filename));
fclose ($handle);
$contenu = $fichier1.$fichier2;
Après, avec ton $contenu, tu peux faire ce que tu veux, le traiter, l’écrire dans un autre fichier…
Pour écrire dans un deuxième fichier, tu peux utiliser cette routine :
$filename = 'test.txt';
$somecontent = "Ajout de chaîne dans le fichier n";
// Assurons nous que le fichier est accessible en écriture
if (is_writable($filename)) {
// Dans notre exemple, nous ouvrons le fichier $filename en mode d'ajout
// Le pointeur de fichier est placé à la fin du fichier
// c'est là que $somecontent sera placé
if (!$handle = fopen($filename, 'a')) {
echo "Impossible d'ouvrir le fichier ($filename)";
exit;
}
// Ecrivons quelque chose dans notre fichier.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Impossible d'écrire dans le fichier ($filename)";
exit;
}
echo "L'écriture de ($somecontent) dans le fichier ($filename) a réussi";
fclose($handle);
} else {
echo "Le fichier $filename n'est pas accessible en écriture.";
}
/me aime le site fr.php.net
Adminhttp://www.php.net/manual/fr/ref.filesystem.php
(lire le manuel PHP c’est pratique aussi, sinon fopen, file_get_contents et fwrite sont tes amis…)
Quelle longueur ton 2ème fichier texte ? C’est pas la même chose si c’est un log apache de 2 To ou 3 lignes de texte ! Ce que tu cherche à faire est utilisé dans 3 milliards de scripts PHP de livres d’or (sans bdd mysql) ou de logs par ex qui trainent partout sur la toile…
Envoie moi un mp si tu veux un petit coup de main.
Edit : Waaagh t’a carrément copier coller un exemple ci-dessus !
dAn
merci
pour le coup, je plaide non coupable!
quand je bosse en PhP, j’ai toujours le manuel en français de phph.net d’ouvert pour pouvoir m’y référer (et j’ai lu les notices sur les différentes fonctions hier soir). Mais j’avoue que j’étais débordé (au niveau compétence) – et peut-être fatigué aussi, vu l’heure.
j’avais essayé aussi f_put_contents mais apparement ça ne passe pas chez free (php trop récent?)
en tout ca encore merci, je vais regarder ça tout à l’heure.
/me LLPDM
Hip !!
Hum… f_put_contents n’existe pas, par contre file_put_contents existe, mais que depuis php5. Par défaut, chez free, une page .php sera traité en php4, il faut mettre .php5 ou regarder dans la faq.
Pour éviter de te prendre la tête avec les versions de php, tu peux aussi jeter un oeil sur PHP Compat.
!! qiH
En tous cas, l’exemple qui concatène les deux fichiers avec $contenu= $truc1.$truc2, je le déconseille fortement sachant qu’on connait pas le contexte de l’utilisation de ce script.
J’imagine bien ce script avec 2 fichiers d’un giga, il va être ravi le serveur (d’ailleurs à mon avis ça marchera pas, le moteur php n’aura probablement pas le droit d’allouer tout ça ).
@Fab1 : On est d’accord, de toutes façons, la somme de la taille des deux fichiers que tu pourras concaténer sera inférieure à la mémoire maximale allouée par script par le serveur (8Mo chez Free, moins la mémoire que tu utilises déjà avec d’autres variables). Je n’ai pas proposé la solution ultime, mais dans la plupart des cas de petits fichiers et/ou si tu ne veux pas réécrire le résultat dans un fichier, cela marche très bien.
@slobman : ils ont du php5 chez Free? depuis quand?@ slobman
oui j’ai répondu trop vite, je voulais bien sur parler de file_put_contents
ça devrait pas être génant dans le contexte d’utilisation de mon script.
En fait je crée un fichier temporaire qui contient une dizaine de lignes (qui produisent un code HTML) en même temps que j’affiche à l’écran le résultat. En cas de validation, je rajoute ces lignes à la suite du fichier de données. D’ici là que j’arrive à 8Mo, il y a de la marge!!
PS: tout ça c’est pour une tite nouveauté sur Made in Pixel alors surveiller la page
Hip !!
Le @ devant une fonction la rend silencieuse. Aucun message d’erreur ne sera retourné dans la page html.
Mais tu peux quand même gérer le code retour. A utiliser quand tu fais des opérations qui risque de montrer des trucs privé (mot de passe de ta base de données, par exemple).
!! qiH
11 sujets de 1 à 11 (sur un total de 11)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › joindre des fichiers en PHP