2015-10-19 155 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