2

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

发送邮件.sh:

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

发送邮件.php:

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

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

4

1 回答 1

3

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

$ 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'));
于 2010-04-14T18:06:22.863 回答