Как вы говорите, вам нужно показать код. : -)
Ошибка переполнения стека обычно происходит, когда ваша функция вызывает слишком много гнезд. См. Поток «Переполнение потока стека» для некоторых примеров того, как это происходит (хотя в случае этого вопроса ответы преднамеренно вызывают переполнение стека).
Возможно читать stdin
путем создания дескриптора файла к php://stdin
и затем читать из него с fgets()
для строки, например (или, как Вы уже заявили, fgetc()
для отдельного символа):
<?php
$f = fopen( 'php://stdin', 'r' );
while( $line = fgets( $f ) ) {
echo $line;
}
fclose( $f );
?>
Вместо того, чтобы вручную открытие поток STDIN, используйте созданный в readline () функция, если Вы просто хотите считать одну строку без слишком много стычки:
<?php
$age= readline("Enter your age: ");
echo "Your age is : ".$age;
документация PHP является Вашим другом: https://www.php.net/manual/en/function.readline.php
Можно использовать fopen()
на php://stdin
:
$f = fopen('php://stdin', 'r');
IIRC, можно также использовать следующее:
$in = fopen(STDIN, "r");
$out = fopen(STDOUT, "w");
Технически то же, но немного более чистый мудрый синтаксисом.