Сохранить переменные PHP в текстовый файл - PullRequest
22 голосов
/ 08 июня 2010

Мне было интересно, как сохранить переменные PHP в текстовый файл и затем извлечь их снова.

Пример:

После ввода материала, записанного вПоле ввода будет сохранено в текстовом файле.Позже результаты должны быть возвращены в качестве переменной.Итак, допустим, переменная $ text. Мне нужно, чтобы она была сохранена в текстовом файле и была в состоянии восстановить ее снова.

Ответы [ 7 ]

42 голосов
/ 08 июня 2010

Это должно делать то, что вы хотите, но без большего контекста я не могу сказать наверняка.

Запись $ text в файл:

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

Получение его снова:

include 'filename.php';
echo $text;
37 голосов
/ 08 июня 2010

Лично я бы использовал file_put_contents и file_get_contents (это оболочки для fopen, fputs и т. Д.).

Кроме того, если вы собираетесь записывать какие-либо структурированные данные, например, массивы, я предлагаю вам сериализовать и десериализовать содержимое файлов.

$file = '/tmp/file';
$content = serialize($my_variable);
file_put_contents($file, $content);
$content = unserialize(file_get_contents($file));
4 голосов
/ 29 ноября 2015

(Извините, я пока не могу комментировать, иначе я бы)

Чтобы добавить ответ Кристиана, вы можете использовать json_encode и json_decode вместо serialize и unserialize, чтобы обеспечить вам безопасность. Смотрите предупреждение со справочной страницы PHP:

Внимание

Не передавайте ненадежный ввод пользователя unserialize (). Несериализация может привести к загрузке и выполнению кода из-за создания объектов и автозагрузки, и злоумышленник может использовать это. Используйте безопасный стандартный формат обмена данными, такой как JSON (через json_decode () и json_encode ()), если вам нужно передать сериализованные данные пользователю.

Итак, ваше окончательное решение может иметь следующее:

$file = '/tmp/file';
$content = json_encode($my_variable);
file_put_contents($file, $content);
$content = json_decode(file_get_contents($file), TRUE);
1 голос
/ 23 мая 2013

for_example , у вас есть anyFile.php, и там написано $any_variable='hi Frank';

чтобы изменить эту переменную на hi Jack, используйте следующий код:

<?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);
?>
0 голосов
/ 27 августа 2018

Хорошо, поэтому мне нужно было решить эту проблему, и я много позаимствовал из ответов на этот вопрос и создал библиотеку: https://github.com/rahuldottech/varDx (Лицензировано по лицензии MIT).

Использует serialize() и unserialize() и записывает данные в файл. Он может читать и записывать несколько объектов / переменных / что угодно в один и тот же файл.

Использование:

<?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

См. Страницу github для получения дополнительной информации. Имеет функции для чтения, записи, проверки, изменения и удаления данных.

0 голосов
/ 30 апреля 2014

Используйте serialize() в переменной, затем сохраните строку в файл.позже вы сможете прочитать serialed var из файла и перестроить исходный var (если это была строка, массив или объект)

0 голосов
/ 08 июня 2010

Используйте комбинацию fopen, fwrite и fread. PHP.net имеет отличную документацию и примеров каждого из них.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...