Мне было интересно, как сохранить переменные PHP в txt-файле, а затем восстановить их снова.
Пример:
Существует поле ввода, после того как отправленные материалы, которые были записаны в поле ввода, будут сохранены в текстовый файл. Позже результаты должны быть возвращены как переменная. Поэтому давайте скажем, что переменная – это текст, который мне нужен, чтобы быть сохраненным в текстовом файле и иметь возможность вернуть его обратно.
Это должно делать то, что вы хотите, но без лишнего контекста я не могу точно сказать.
Запись текстового файла в файл:
$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;
Лично я бы использовал file_put_contents и file_get_contents (это обертки для fopen, fputs и т. Д.).
Кроме того, если вы собираетесь писать какие-либо структурированные данные, например массивы, я предлагаю вам сериализовать и unserialize содержимое файлов.
$file = '/tmp/file'; $content = serialize($my_variable); file_put_contents($file, $content); $content = unserialize(file_get_contents($file));
(Извините, я пока не могу комментировать, иначе я бы)
Чтобы добавить к ответу Кристиана, вы можете использовать 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);
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); ?>
Используйте комбинацию 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
Используйте serialize()
для переменной, затем сохраните строку в файле. позже вы сможете прочитать сериализованный var из файла и перестроить исходный var (пусть это была строка или массив или объект)