2015-10-19 141 views
2

我已经有了这个功能很长一段时间,并且直到现在它已经很好地服务了我。非常简单的脚本,我在命令行(窗,我相信命令提示符是正确的术语)运行它,我得到奇怪的结果,看到从命令行读取输入

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

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

enter image description here

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

回答

1

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

rtrim()将削减所有的空格,如果你简单地忽略第二个参数:

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

啊,视窗.... –

2

的Windows行尾CRLF - \r\n

您已删除\n,只留下\r,这本身将光标移动到当前线的开始,并覆盖那里的东西。

因此...

brat \r here 
dgd overwrites the above line 
dgdt result