web-dev-qa-db-fra.com

Sauvegarder PHP variables dans un fichier texte

Je me demandais comment enregistrer les variables PHP dans un fichier txt, puis récupérer À nouveau.

Exemple:

Il y a une boîte de saisie, après avoir soumis les éléments qui ont été écrits dans .__ la boîte de saisie sera enregistrée dans un fichier texte. Plus tard, les résultats doivent être rapportés sous forme de variable. Supposons donc que la variable est $ text. Je besoin de l’être dans un fichier texte pour pouvoir le récupérer à nouveau.

19
abhis

Cela devrait faire ce que vous voulez, mais sans plus de contexte, je ne peux pas dire avec certitude.

Écrire $ text dans un fichier:

$text = "Anything";
$var_str = var_export($text, true);
$var = "<?php\n\n\$text = $var_str;\n\n?>";
file_put_contents('filename.php', $var);

Récupérer à nouveau:

include 'filename.php';
echo $text;
41
Sandeep Shetty

Personnellement, j'utiliserais file_put_contents et file_get_contents (ce sont des wrappers pour fopen, fputs, etc.).

De même, si vous souhaitez écrire des données structurées, telles que des tableaux, je vous suggère de sérialiser et de désérialiser le contenu des fichiers.

$file = '/tmp/file';
$content = serialize($my_variable);
file_put_contents($file, $content);
$content = unserialize(file_get_contents($file));
36
Christian

(Désolé je ne peux pas commenter pour l'instant, sinon je le ferais)

Pour ajouter à la réponse de Christian, vous pouvez envisager d'utiliser json_encode et json_decode au lieu de serialize et unserialize pour vous protéger. Voir un avertissement de la page de manuel PHP:

Attention

Ne transmettez pas les entrées utilisateur non fiables à unserialize (). La désérialisation peut entraîner le chargement et l’exécution de code en raison de l’instanciation et du chargement automatique d’objets, ce qu’un utilisateur malveillant peut exploiter. Utilisez un format d'échange de données standard sûr, tel que JSON (via json_decode () et json_encode ()) si vous devez transmettre des données sérialisées à l'utilisateur.

Donc, votre solution finale pourrait avoir les éléments suivants:

$file = '/tmp/file';
$content = json_encode($my_variable);
file_put_contents($file, $content);
$content = json_decode(file_get_contents($file), TRUE);
4
duckboy81

pour_exemple , vous avez anyFile.php et $any_variable='hi Frank'; est écrit

pour changer cette variable en hi Jack, utilisez comme le code suivant:

<?php
$content = file_get_contents('anyFile.php'); 

$new_content = preg_replace('/\$any_variable=\"(.*?)\";/', '$any_variable="hi Jack";', $content);

file_put_contents('anyFile.php', $new_content);
?>
1
T.Todua

Utilisez serialize() sur la variable, puis enregistrez la chaîne dans un fichier. plus tard, vous pourrez lire la variable sérialisée dans le fichier et reconstruire la variable originale (qu'il s'agisse d'une chaîne, d'un tableau ou d'un objet)

0
MarcoSpada

Utilisez une combinaison de fopen, fwrite et fread. PHP.net a une excellente documentation et exemples de chacun d’eux. 

http://us2.php.net/manual/en/function.fopen.php
http://us2.php.net/manual/en/function.fwrite.php
http://us2.php.net/manual/en/function.fread.php

0
Kerry Jones

Bon, j'avais donc besoin d'une solution, j'ai emprunté énormément aux réponses à cette question et créé une bibliothèque: https://github.com/rahuldottech/varDx (sous licence MIT Licence).

Il utilise serialize() et unserialize() et écrit les données dans un fichier. Il peut lire et écrire plusieurs objets/variables/quels que soient le même fichier.

Usage:

<?php
require 'varDx.php';
$dx = new \varDx\cDX; //create an object
$dx->def('file.dat'); //define data file
$val1 = "this is a string";
$dx->write('data1', $val1); //writes key to file
echo $dx->read('data1'); //returns key value from file

Voir la page github pour plus d'informations. Il a des fonctions pour lire, écrire, vérifier, modifier et supprimer des données.

0
rahuldottech