【发布时间】:2018-02-27 16:44:49
【问题描述】:
我正在编写一个小命令行脚本来管理我的应用程序中的一些数据。
我正在使用 STDIN 和 fgets() 来读取用户输入。
当我添加一个新数据时,我可以使用fgets()从STDIN读取新数据,然后将其添加到数据库中。
用于添加数据的示例 CLI 界面:
Value: <user input>
我可以使用以下方法获取此用户输入:
$input = trim(fgets(STDIN));
我遇到的问题是编辑已经存在的数据的功能。
我想要的是预先填充到用户输入中的先前值。
用于编辑数据的示例 CLI 界面:
Value: <previous>
其中<previous> 是旧值,可编辑。
我曾尝试使用fwrite() 写入STDIN,它确实如此,但写入的数据不可编辑,并且光标从数据末尾开始。
我的尝试:
// Prompt
echo 'Value: ';
// Try and put the old data into STDIN
fputs(STDIN, $old_data);
// Get the new value from STDIN
$new_data = trim(fgets(STDIN));
界面最终看起来像这样:
Value: <old_data>
^
Cursor Position
并且<old_data> 不可编辑。
那么从fgets(STDIN)返回的数据只给了我光标起始位置之后的数据。
我不确定这对于没有任何疯狂库的 PHP 是否可行。任何帮助和想法将不胜感激。
【问题讨论】:
标签: php command-line-interface stdin fgets fwrite