Запись результатов этого сценария PHP в текстовый файл

1

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

Это мой скрипт, который захватывает данные из базы данных и форматирует результаты, как я их хочу:

$users = get_users('user_login', 'display_name', 'ID');

echo 'users: [ ';
$n = count($users);
foreach ($users as $i => $user) {

echo '{ name: "'.$user->user_login.'"';
echo ' username: "'.$user->display_name.'"';
echo ' image: "'.$user->ID.'" }';
if (($i+1) != $n) echo ', ';
}
echo '] ';

Что в основном выплевывает следующее при запуске напрямую:

users: [ { name: "007bond" username: "James Bond" image: "830" }, { name: "4Tek" username: "4Tek" image: "787" } ]

Но вместо того, чтобы запускать этот скрипт, когда мне это нужно (что будет много), я хотел бы записать результаты этого скрипта в текстовый файл.

Это возможно?

  • 1
    если вы знаете fopen, почему вы не используете его?
  • 0
    Да, я знаю, как использовать fopen и fwrite, но не могу понять, как установить переменную для записи.
Показать ещё 2 комментария
Теги:
fopen
fwrite

3 ответа

0
Лучший ответ

Вы можете использовать fopen и fwrite

$users = get_users('user_login', 'display_name', 'ID');

$string= 'users: [ ';
$n = count($users);
foreach ($users as $i => $user) {

    $string.= '{ name: "'.$user->user_login.'"';
    $string.= ' username: "'.$user->display_name.'"';
    $string.= ' image: "'.$user->ID.'" }';
    if (($i+1) != $n) $string.= ', ';
}
$string.='] ';

$my_file = 'file.txt';
$handle = fopen($my_file, 'w') or die('Cannot open file:  '.$my_file);
fwrite($handle, $string);
  • 0
    Doh! Конечно, мне нужно объединить строку ... Спасибо LTasty;)
  • 1
    Не забывайте echo $string в конце, если вы все еще хотите увидеть результаты
1

Вы можете использовать несколько способов записи текста в файл.
1. Без php просто перенаправьте вывод сценария в определенный файл следующим образом:

# php yourfile.php > result.txt

И тогда у вас есть результат в result.txt.

  1. С php можно:
    $users = get_users('user_login', 'display_name', 'ID');

    $text = 'users: [ ';

    $n = count($users);
    foreach ($users as $i => $user) {
       $text .=  '{ name: "'.$user->user_login.'"';
       $text .= ' username: "'.$user->display_name.'"';
       $text .= ' image: "'.$user->ID.'" }';
       if (($i+1) != $n) $text .= ', ';
    }
    $text .= '] ';

    file_put_contents( 'result.txt', $text );
  • 0
    Можете ли вы объяснить, как я бы использовал ваше решение? Звучит очень интересно. Похоже, это команда сценария bash?
  • 0
    Первый подход основан на общем перенаправлении вывода в консоли bash. Таким же образом вы можете перехватить любой вывод из любого скрипта в конкретный файл. Просто используйте «>» sybmol после любой команды, и вы поймаете стандартный вывод (для обнаружения ошибок вам понадобятся дополнительные изменения).
Показать ещё 1 комментарий
0

Вы тоже можете это сделать. на всякий случай

$fp = fopen('data.txt', 'w');
foreach ($users as $i => $user) {

fwrite($fp, 'whatever');
}
fwrite($fp, 'anything');

fclose($fp);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню