/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

無理やり本文取り出せた



次の2行(一部)で成功



<?php
//正規表現に基づいて置換(本文と思われる個所を「~-」で囲う)
$text = preg_replace("/[^.*:]\s\r\n/","~-\n",$text) ;

//本文部の抽出
preg_match_all("/~-([^~-].*)~-/s",$text,$texts) ;
?>

これを実行するとこうなる



  • 置換後



BEGIN:VMSG


VERSION:1.1


X-IRMC-STATUS:READ


X-IRMC-TYPE:INET


X-IRMC-BOX:INBOX


BEGIN:VENV


BEGIN:VBODY


Date: Wed, 17 Dec 2008 00:02:18 +0900


From: +++++++@iiiii.jp


Subject: Re:Re:


Reply-To:


To: jfjf@jsj.jp


Cc:


MIME-Version: 1.0


Content-Type: text/plain; charset=Shift_JIS


Content-Transfer-Encoding: 8bit


~-


一生どうでしょうします


腹を割って話そう


~-


END:VBODY


END:VENV


END:VMSG




  • 抽出後(print_rで中身を表示させた結果です)



Array
(
[0] => Array
(
[0] => ~-
一生どうでしょうします
腹を割って話そう
~-
)

[1] => Array
(
[0] =>
一生どうでしょうします
腹を割って話そう

)

)





  • つかった方法(置換編)


パターン=>「"/[^.*:]\s\r\n/"」


これは「:」の前に文字が0文字以上ある所を除き、そして「半角スペース改行」となってる所にマッチする。


間違っても



Cc: \\r\\n


な所にはマッチしない、本文部は



[ ][\\r\\n]
一生どうでしょうします
腹を割って話そう
[ ][\\r\\n]


となっているのでマッチします、そして次で取り出します。


「"/~-([^~-].*)~-/s"」がパターンです、最後に付けたsは


改行は無視して1行として処理する


という意味合いになります、なのでこのパターンは


「~-」と「~-」に挟まれた文字列にマッチします、ただし「[^~-]」で挟まれている間の「~-」は無視されます。


「([^~-].*)」でマッチした文字列を取り出します、これはpreg_replaceで使いますよ。


urlをリンクにしたりとかで活躍、今回は「取り出す」という事で使いました。


ダンプした奴の[1]の所に取り出されたのが入ってます、「()」を使わなくても取り出されないだけで済みます。


マッチした文字列全体だけが戻ってきますが、「()」を絡めたほうがそのまま使えるので俺はこっちかな。




今後のメモ



  • メールデータのxml化=>XMLばっかとか言わんでくれよぉ

  • データの移動

    • その際のリネーム



  • メーラ風のデザイン