http://q.hatena.ne.jp/1302708059
ファイル出力し$dataの中は見ることができたのですが、今度は$structureの中を見たいのですが方法がわかりません。
構造がわからない配列をブラウザ出力のprint_r();みたいに展開できないものでしょうか?
よろしくお願いします。
<?php
require_once "Mail/mimeDecode.php";
$data = file_get_contents("php://stdin");
// メールをデコードする
$decoder = new Mail_mimeDecode($data);
$structure = $decoder->decode(array(
'include_bodies' => true,
'decode_bodies' => true,
'decode_headers' => true,
));
?>
print_r() は、第二引数に true をセットすると、
出力しないで結果を取得できます。
$dataの内容をファイル出力できたのであれば、
file_put_contents() の第1引数にそのファイルのパスを
指定して、そこに書き込めると思います。
<?php require_once "Mail/mimeDecode.php"; $data = file_get_contents("php://stdin"); // メールをデコードする $decoder = new Mail_mimeDecode($data); $structure = $decoder->decode(array( 'include_bodies' => true, 'decode_bodies' => true, 'decode_headers' => true, )); $outstr = print_r($structure, true); file_put_contents('そのファイルのパス', $outstr); ?>
1番の方の回答も、file_put_contents() に 'php://stdout' じゃなくて、
出力したいファイルのパスを渡せば、目的は達成できると思います。
'php://stdout' は標準出力なので、file_put_contents('php://stdout', $outstr); は
echo $outstr; と同じことですかね。
メール振り分け時は行き場がなくて捨てられちゃう?
(サーバーのmaillogには出てるかもしれませんが)
コマンドラインから実行すれば画面に出てくるでしょう。
例えば $data の内容をファイルに保存しておき、サーバーに ssh 等でログインして、
以下を実行するとか。
cat '$dataの内容を保存したファイル名' | php postmail.php
http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E3%82%B9%E3%83%8...
以下のようにしてはいかがでしょう。
<?php ob_start(); var_dump($structure); $outstr = ob_get_contents(); ob_end_clean(); file_put_contents('php://stdout', $outstr); ?>
すみません。
file_put_contents('php://stdout', $outstr);
の部分が良くわからないのですが、
'php://stdout'
を指定するとどういう動きになるのですか?
教えていただいたコードを関数にし、$structureを引数に渡し動かしてみますが何もおきません。
よろしくお願いします。
var_dumpをどのように使えばいいのですか?
すいません。
いままで他の回答も含め、ご紹介いただいた関数はあらかたわかります。
しかし、どうやれば吐き出せるのか?イメージがわきません。
どなたか、その辺も含めよろしくお願いします。
print_r() は、第二引数に true をセットすると、
出力しないで結果を取得できます。
$dataの内容をファイル出力できたのであれば、
file_put_contents() の第1引数にそのファイルのパスを
指定して、そこに書き込めると思います。
<?php require_once "Mail/mimeDecode.php"; $data = file_get_contents("php://stdin"); // メールをデコードする $decoder = new Mail_mimeDecode($data); $structure = $decoder->decode(array( 'include_bodies' => true, 'decode_bodies' => true, 'decode_headers' => true, )); $outstr = print_r($structure, true); file_put_contents('そのファイルのパス', $outstr); ?>
1番の方の回答も、file_put_contents() に 'php://stdout' じゃなくて、
出力したいファイルのパスを渡せば、目的は達成できると思います。
'php://stdout' は標準出力なので、file_put_contents('php://stdout', $outstr); は
echo $outstr; と同じことですかね。
メール振り分け時は行き場がなくて捨てられちゃう?
(サーバーのmaillogには出てるかもしれませんが)
コマンドラインから実行すれば画面に出てくるでしょう。
例えば $data の内容をファイルに保存しておき、サーバーに ssh 等でログインして、
以下を実行するとか。
cat '$dataの内容を保存したファイル名' | php postmail.php
http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E3%82%B9%E3%83%8...
できました!
かゆい所に手が届く回答でとても助かりました。
バックグラウンドで稼働するプログラムの変数の中を見るのはずっとずっと以前からの疑問でした。
これからのデバック作業がとても楽になります。
ありがとうございました。
http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E3%82%B9%E3%83%8...
勉強になります。
できました!
かゆい所に手が届く回答でとても助かりました。
バックグラウンドで稼働するプログラムの変数の中を見るのはずっとずっと以前からの疑問でした。
これからのデバック作業がとても楽になります。
ありがとうございました。
http://ja.wikipedia.org/wiki/%E6%A8%99%E6%BA%96%E3%82%B9%E3%83%8...
勉強になります。