2010-04-14 22 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

相關問題