【问题标题】:php shell_exec adds unwanted line breakphp shell_exec 添加了不需要的换行符
【发布时间】:2012-10-12 12:17:44
【问题描述】:

为什么phpshell_exec 命令会在输出中添加不需要的换行符 (\r\n),我该如何防止这种情况发生?

test.php:

<?php
var_dump(shell_exec('echo "test"'));

运行 php test.php 会导致:

string(5) "test
"

【问题讨论】:

  • 你到底为什么要用 shell_exec 做回声?您打算稍后将其更改为其他内容吗?
  • @DanyKhalife:这只是一个简化的例子。
  • 好吧,我问的原因是,您面临的问题是由于使用了echo 而并非所有命令都如此(至少据我所知,并非全部的命令有一个 -n 选项,其工作方式相同,有些甚至根本不输出换行符)

标签: php shell shell-exec


【解决方案1】:

echo 命令添加换行符,以便您的示例按预期工作。如果你想删除它,只需使用trim:

var_dump(trim(shell_exec('echo "test"')));

这将输出:

string(5) "test"

【讨论】:

  • 我以前一直在这样做(修剪),但是当回显字符串以换行符结束时会出现问题。
  • @Cicada 不是每个命令都有这样的-n 标志,但你是对的。
  • @Horen,您是否尝试在反引号内执行它?然后会发生什么?
  • @Cthulhu 你是这个意思吗? var_dump(shell_exec('echo \'test\'')); 不行
  • echo -n "test" 完美运行。谢谢,@蝉。您可以将其添加为答案以便我接受吗?
【解决方案2】:

您可以将-n 作为参数传递给您的echo 命令,这将防止echo 输出尾随换行符。

来自手册:

-n 不输出尾随的换行符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2011-10-23
    • 1970-01-01
    • 2016-11-30
    • 2011-02-02
    相关资源
    最近更新 更多