2010-04-14 54 views
2

我有一个PHP脚本,我从另一个shell脚本调用,该脚本使用从shell脚本生成的消息发送自动化电子邮件。问题是,当我发送消息时,所有换行符都被打印到消息中。我如何让他们被解释?当通过命令行传递给php时,换行符不被解释

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); 

奇怪的是\ n $的argv变量的解释之后,实际上换行打印一个新行,但$ argv变量中的换行符不会,我试图用双引号将变量包装在其他内容中,但目前为止无济于事。

回答

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,,而不是阅读:

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

Excelllent,工作!非常感谢! – CarbonX 2010-04-14 18:50:00

+0

不客气:-)玩得开心! – 2010-04-14 19:14:12