Скрипт чтения из STDIN

У меня есть PHP-скрипт, который читает текстовые файлы. я использую fgetc() чтобы получить каждого персонажа одного за другим. Я открываю файл для чтения с fopen(), а затем я использую файловый дескриптор, возвращенный из fopen() в качестве первого аргумента fgetc(), Я пытался сделать то же самое с чтением из STDIN, Я хотел запустить скрипт в терминале, дать ему весь текст (который раньше был в текстовом файле) и нажать клавишу ввода. Я думал, что скрипт прочитает его и будет работать так, как если бы он читал из текстового файла, но он не работает. Работает только тогда, когда набираете каждый отдельный символ и нажимаете после него клавишу ввода. Это почему? Есть ли возможность заставить скрипт вести себя так, как я хотел? Что я могу дать ему весь текст сразу в терминал? Должен ли я использовать разные функции или что-то?

$inputFile = fopen($path, "w");
while(($char = fgetc($inputFile)) !== false){
dosomething();
}

Что я пытаюсь сделать, это заменить $inputFile в fgetc()с STDIN,

0

Решение

Увидеть http://php.net/manual/en/features.commandline.io-streams.php, второй комментарий

Обратите внимание, что без вызова stream_set_blocking () функция fgetcsv () зависает на STDIN, ожидая ввода от пользователя, что бесполезно, так как мы ищем файл с конвейером. Если его здесь уже нет, этого не будет.

<?php
stream_set_blocking(STDIN, 0);
$csv_ar = fgetcsv(STDIN);

Я думаю, что это то же самое для fgetc, После всего этого

Строка fgetc (ресурс $ handle) Получает персонаж из указанного указателя файла.

Акцент мой.
Увидеть http://php.net/manual/en/function.fgetc.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]