2

シェル スクリプトから生成されたメッセージを含む自動メールを送信する別のシェル スクリプトから呼び出す 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);

奇妙なことは、 $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 に答える