無理やり本文取り出せた
次の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]の所に取り出されたのが入ってます、「()」を使わなくても取り出されないだけで済みます。
マッチした文字列全体だけが戻ってきますが、「()」を絡めたほうがそのまま使えるので俺はこっちかな。
今後のメモ