从命令行读取输入

时间:2015-10-19 14:45:50

标签: php

我已经有很长一段时间使用这个功能了,直到现在它一直很好用。非常简单的脚本,我在命令行运行它(Windows,我相信命令提示符是正确的术语),我得到奇怪的结果,请参阅

function readline($prompt = '') {
    echo $prompt;
    return rtrim(fgets(STDIN), "\n");
}

$name = readline('Enter Name: ');
exit($name . 'dgd');

enter image description here

而不是预期的bratdgd。任何人都可以告诉我发生了什么事?

2 个答案:

答案 0 :(得分:2)

Windows行结尾为CRLF - \r\n

您已删除了\n,只留下\r,它本身会将光标移动到当前行的开头并覆盖其中的内容。

...因此

brat   \r here
dgd    overwrites the above line
dgdt   result

答案 1 :(得分:1)

在Windows上,换行符由"\r\n"字符序列表示,而不仅仅是"\n"。你也需要修剪它。

如果您只是省略第二个参数,

rtrim()将修剪所有空格:

function readline($prompt = '') {
    echo $prompt;
    return rtrim(fgets(STDIN));
}