gpt4 book ai didi

PHP readline() 当 STDIN 不是键盘时

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:06:28 25 4
gpt4 key购买 nike

我正在编写一个能够从标准输入读取然后请求确认的脚本。

<?php
$stream = fopen('php://stdin', 'r');
$input = fgets($stream, 1024);
$confirmation = readline('Are you sure?');
if ( $confirmation == 'y' )
/* Do dangerous stuff */

当我直接运行它时:

$ php script.php
inputdata
^D
Are you sure?

但我正在尝试使用一个文件作为 STDIN 来运行它。在这种情况下,readline() 返回 false 并且不提示确认。

$ php script.php < data.txt

$ echo "foobar" | php script.php

以这种方式调用此脚本时,如何从 STDIN 和键盘读取两者?

谢谢。

最佳答案

使用fgetc使用 STDIN 函数。请参见下面的示例。

$input = fgets(STDIN, 1024);
echo "\nAre you sure?\n";
$conf = fgetc(STDIN);
if($conf=='y'){
echo "Great! Lets go ahead\n";
}else{
echo "Okay, May be next time\n";
}

控制台输出

示例 1

    $ echo 'data
> y
> ' | php php_readline.php

Are you sure?
Great! Lets go ahead

示例 2

$ php php_readline.php 
Some data

Are you sure?
n
Okay, May be next time

关于PHP readline() 当 STDIN 不是键盘时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com