箭头键在 php CLI 脚本中不起作用 |编辑:STDIN参与


Arrow keys not working in php CLI script | EDIT: STDIN involved

我最近进入了PHP CLI的迷人世界。

我在 ubuntu 终端上运行脚本,当我按下箭头键时,它没有移动光标,而是打印了转义代码 ^[[A^[[B^[[C^[[D.

如果我使用普通终端,则不会出现问题。所以我想在我的脚本中会有一些东西阻止正常行为。

有人有什么解决方案吗?

感谢您的帮助!

编辑:

看起来它是 STDIN,我用它来捕获输入,问题!等待 STDIN 输入时,终端显示错误的字符!!我该如何解决这个问题?

我建议用 readline() 函数替换 fgets(STDIN) 调用,该函数至少在 Linux 环境中可用。请注意,readline 库未在 OS X 中提供,尽管它可以单独安装。

// $input = fgets(STDIN);
$input = readline('Input: ');

如果您需要编辑行的唯一原因是从拖放文件路径中删除多余的 '-字符,则始终可以从脚本中的字符串中修剪任何多余的字符。

$input = readline('Input: ');
$input = trim($input, '´');