#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);