我已经有很长一段时间使用这个功能了,直到现在它一直很好用。非常简单的脚本,我在命令行运行它(Windows,我相信命令提示符是正确的术语),我得到奇怪的结果,请参阅
function readline($prompt = '') {
echo $prompt;
return rtrim(fgets(STDIN), "\n");
}
$name = readline('Enter Name: ');
exit($name . 'dgd');
而不是预期的bratdgd
。任何人都可以告诉我发生了什么事?
答案 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));
}