У меня есть PHP-скрипт, который читает текстовые файлы. я использую fgetc()
чтобы получить каждого персонажа одного за другим. Я открываю файл для чтения с fopen()
, а затем я использую файловый дескриптор, возвращенный из fopen()
в качестве первого аргумента fgetc()
, Я пытался сделать то же самое с чтением из STDIN
, Я хотел запустить скрипт в терминале, дать ему весь текст (который раньше был в текстовом файле) и нажать клавишу ввода. Я думал, что скрипт прочитает его и будет работать так, как если бы он читал из текстового файла, но он не работает. Работает только тогда, когда набираете каждый отдельный символ и нажимаете после него клавишу ввода. Это почему? Есть ли возможность заставить скрипт вести себя так, как я хотел? Что я могу дать ему весь текст сразу в терминал? Должен ли я использовать разные функции или что-то?
$inputFile = fopen($path, "w");
while(($char = fgetc($inputFile)) !== false){
dosomething();
}
Что я пытаюсь сделать, это заменить $inputFile
в fgetc()
с STDIN
,
Увидеть 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
…
Других решений пока нет …