Как я могу прочитать содержимое stdin (вплоть до EOF) в строку в PHP?
Как я могу прочитать содержимое stdin (вплоть до EOF) в строку в PHP?
Ответ 1
закончил выяснять это сам:
$input_data = file_get_contents("php://stdin");
Ответ 2
Используйте некоторые функции чтения файлов (например, fgets()
, fgetc()
, fscanf()
) и перейдите в STDIN
в качестве пути к файлу (или php://stdin
, в зависимости от того, как новая версия PHP).
Вы можете проверить EOF, используя feof()
.
Для получения дополнительной информации см. ссылку для программирования командной строки в PHP на PHP.net.
Ответ 3
Здесь альтернатива: вы можете использовать stream_get_contents
, чтобы получить все из открытого потока (AKA - дескриптор файла). STDIN
- это уже открытый дескриптор, эквивалентный тому, что вы получаете, если вы вызываете fopen('php://stdin')
(см. ссылку: Вводные/выходные потоки
Итак: вы можете использовать
$input_data = stream_get_contents(STDIN);
который эквивалентен принятому ответу.