Сохранение выходных данных php в файле

#php #arrays #file #printing

#php #массивы #файл #печать

Вопрос:

У меня есть:

 echo"<br>";echo"<br><pre>";print_r($array2);echo"</pre>";
echo"<br>";echo"<br><pre>";print_r($array3);echo"</pre>";
 echo"<br>";echo"<br><pre>";print_r($array4);echo"</pre>";
  

Мне нужно сохранить то, что все эти print_r печатают в файл (ничего не помещая на страницу).

Я знаю, что мне нужно сделать что-то подобное:

 $f = fopen("file.txt", "w");
fwrite($f, "TEXT TO WRITE");
fclose($f); 
  

Но я не знаю, как поместить в него содержимое перед.

Больше миллиона

Ответ №1:

Вы можете использовать буферизацию выходных данных, что очень удобно, когда вы хотите контролировать то, что вы выводите в своих PHP-скриптах и как это выводить. Вот небольшой пример:

 ob_start();
echo"<br>";echo"<br><pre>";print_r($array2);echo"</pre>";
echo"<br>";echo"<br><pre>";print_r($array3);echo"</pre>";
echo"<br>";echo"<br><pre>";print_r($array4);echo"</pre>";

$content = ob_get_contents();

$f = fopen("file.txt", "w");
fwrite($f, $content);
fclose($f); 
  

РЕДАКТИРОВАТЬ: Если вы не хотите показывать выходные данные на своей странице, вам просто нужно вызвать ob_end_clean():

 ob_start();
//...

$content = ob_get_contents();
ob_end_clean();
//... write the file, either with fopen or with file_put_contents
  

Комментарии:

1. не используйте fopen(), а вместо этого file_put_contents()

2. Извини, Дэвид, я забыл упомянуть: не удается отобразить отпечатки на моей странице, я имею в виду, вместо отображения print_r я должен сохранить выходные данные отпечатков в файле. Спасибо!

3. @Ash: ничего. f_p_c() — это просто прославленная оболочка вокруг fopen / fwrite / fclose. Все, что вы делаете, это сохраняете себе 2 строки кода.

4. Должно быть ‘contents’ вместо ‘content’

Ответ №2:

Попробуйте это, используя true параметр в print_r :

 $f = fopen("file.txt", "w");
fwrite($f, print_r($array2, true));
fwrite($f, print_r($array3, true));
fwrite($f, print_r($array4, true));
fclose($f);