【问题标题】:Newlines not being interpreted when passed to php via the command line通过命令行传递给 php 时不会解释换行符
【发布时间】:2010-04-15 02:06:22
【问题描述】:

我有一个 PHP 脚本,我正在从另一个 shell 脚本调用该脚本,该脚本发送一封自动电子邮件,其中包含从 shell 脚本生成的消息。问题是,当我发送消息时,所有换行符都会打印到消息中。如何让它们被解释?

sendmail.sh:

/path/to/phpscript/sendmail.php "Some Message With Newlines\nHello World.\n"

sendmail.php:

$message = $argv[1] . "\nNewline";
$smtp->send($to, $from, $message);

奇怪的是 $argv 变量被解释后的 \n 并且实际上在新行上打印了换行符,但是 $argv 变量中的换行符没有,我尝试将变量用双引号括起来但到目前为止无济于事。

【问题讨论】:

    标签: php email command-line command-line-arguments


    【解决方案1】:

    real 换行符调用你的脚本怎么样:

    $ php temp.php "Some Message With Newlines
    > Hello World.
    > "
    

    temp.php 包含以下内容:

    var_dump($argv[1]);
    

    得到以下输出:

    string(40) "Some Message With Newlines
    Hello World.
    "
    



    编辑:另一个解决方案可能是使用类似这样的东西来调用您的 PHP 脚本:

    $ echo -e "Some Message With Newlines\nHello World.\n" | php temp.php
    

    并且,修改您的 PHP 脚本,使其从 stdin, 而不是 $argv 读取:

    var_dump(file_get_contents('php://stdin'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多