Как я могу прочитать содержимое 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);
который эквивалентен принятому ответу.