Php 从命令行读取输入

Php 从命令行读取输入,php,Php,我已经有了这个功能很长一段时间了,到现在为止,它一直为我服务。非常简单的脚本,我在命令行中运行它(windows,我相信命令提示符是合适的术语),我得到了奇怪的结果,请参阅 function readline($prompt = '') { echo $prompt; return rtrim(fgets(STDIN), "\n"); } $name = readline('Enter Name: '); exit($name . 'dgd'); 而不是预期的bratdgd

我已经有了这个功能很长一段时间了,到现在为止,它一直为我服务。非常简单的脚本,我在命令行中运行它(windows,我相信命令提示符是合适的术语),我得到了奇怪的结果,请参阅

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

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


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

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

如果忽略第二个参数,将修剪所有空白:

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

Windows行结尾为CRLF-
\r\n

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

因此

brat   \r here
dgd    overwrites the above line
dgdt   result