fgets(STDIN)自动换行?

时间:2013-05-15 08:56:26

标签: php text-files stdin fopen fwrite

我注意到了php中的fgets(STDIN)

我有这段代码:

if($fd = fopen($filename, "a")){

    $message = fgets(STDIN);
    $message = $message.":";
    echo $message;
    //fwrite($fd, $message);
    fclose($fd);
}

我尝试在文本文件的末尾插入例子:

helloWorld

但我总是:

helloWorld
:

不是:

helloWorld:

stdin是否自动换行?如何删除此自动跳转?

1 个答案:

答案 0 :(得分:2)

使用stream_get_line代替fgets:

if($fd = fopen($filename, "a")){
    $message = stream_get_line(STDIN, 1024);
    $message = $message.":";
    echo $message;
    //fwrite($fd, $message);
    fclose($fd);
}

或者您可以使用rtrim功能删除行结尾:

if($fd = fopen($filename, "a")){

    $message = fgets(STDIN);
    $message = rtrim($message, "\n\r") . ":";
    echo $message;
    //fwrite($fd, $message);
    fclose($fd);
}