我有一个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并且实际上在新行上打印了Newline,但是$ argv变量中的换行没有,我尝试用双引号括起变量等等但到目前为止无济于事。
答案 0 :(得分: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'));