メール転送でPHPの正規表現です。
sakuraサーバーで、mailfilterを使用して、パイプでメール転送しようという魂胆です。
http://ameblo.jp/topepe/entry-10325428465.html
※PHPにて正規表現を使って整形してメール転送しようと思っています。
#!/usr/local/php/5.2.17/bin/php-cgi
<?php
$content = null;
$fp=fopen("php://stdin",'r') or die('File Open Error');
while( !feof($fp) ){
$content .= fgets( $fp ,1024);
}
mb_language("japanese");
mb_internal_encoding("UTF-8");
mb_send_mail("xxx@example.com","subject",$content);
?>
のような簡単な転送では成功しています。
そこでpreg_replaceでメールヘッダーを削ったり、本文中の日本語句を削除してから転送しようとしているのですが、preg_replaceをかけるとすべて消えてしまいます。
◎英数字だけの正規表現(/\A(.*?).jp/sなど)の場合はうまく動きます。
×日本語が入ると駄目です。(/\A(.*?).受信者/usなど)
sakuraの場合、パイプで動かすPHPファイルはEUC+LFでないと動きません。
なので
$content_utf8 = mb_convert_encoding($content,"UTF-8","EUC-JP");
$patturn_utf8 = mb_convert_encoding("/\A(.*?)受信者/us","UTF-8","EUC-JP");
$c = preg_replace($patturn_utf8,"",$content_utf8);
mb_send_mail("xxx@example.com","subject",$c);
などとしていますが、駄目です。
preg_matchだとメールすら転送されません。
※ヘッダーを削るだけならPEARもありだと思いますが、本文のもろもろを削るので、
PEARがあろうが、preg_replaceを使いたいことには変わりありません。
できればPEARはインストールしないでただの正規表現で行きたい、という段階です。
なにかヒントはありますでしょうか。
sakuraサーバー
php/5.2.17 php-cgi
PHPファイルはEUC+LF
お礼
これ欲しかったです!