List-Unsubscribe Fromヘッダーを取得する正規表現

php preg-match regex
List-Unsubscribe Fromヘッダーを取得する正規表現

REGEXを見つけて、PHPの文字列から電子メールヘッダーのlist-unsubscribeを取得しようとしています。

文字列は$ row [‘emailHeader’];です。

現在のコード:

preg_match_all('[Ll]ist-[Uu]nsubscribe:([^\r\n)', $row['emailHeader'], $matches);

これにより、一致がゼロになります。 私は、大文字と小文字を区別しない「list-unsubscribe:」を探しています。次のメールの見出しが始まるまで、何でも従います。 list-unsubscribeの後には、通常、http://。が続きます。 またはまたはhttp:// …​ いずれにせよ、ヘッダーからこれらを抽出したら、それらでソートできますが、正規表現に問題があります。

サンプルヘッダー

Delivered-To: [email protected]

Received: by 10.204.154.213 with SMTP id p21cs9880bkw; Fri, 18 Mar 2011

 02:30:10 -0700 (PDT)

Received: by 10.216.6.27 with SMTP id 27mr896493wem.69.1300440610105; Fri, 18

 Mar 2011 02:30:10 -0700 (PDT)

Return-Path:

Received: from omp.email.blackberry.com (omp.email.blackberry.com

 [12.130.139.56]) by mx.google.com with ESMTP id

 m9si6838771wer.130.2011.03.18.02.30.08; Fri, 18 Mar 2011 02:30:09 -0700 (PDT)

Received-SPF: pass (google.com: domain of [email protected]

 designates 12.130.139.56 as permitted sender) client-ip=12.130.139.56;

Authentication-Results: mx.google.com; spf=pass (google.com: domain of

 [email protected] designates 12.130.139.56 as permitted sender)

 [email protected]; dkim=pass (test mode)

 [email protected]

DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=rim2;

 d=e.blackberry.com;

 h=MIME-Version:Content-Type:Date:From:Reply-To:Subject:List-Unsubscribe:To:Message-ID;

 [email protected]; bh=L4GAsbVx5z3blXLEGQxCgfBnsNc=;

 b=MHU4avprkIGvy+kVPFX2rGO60W1751sP9W19RpfSRKsPb4z+6477OvH43sHRkob3tmUxRWouXpLT

 /pbmIgRYG/ERQskQamVppPHd7lYbiLT2/VMxanhHRaiUNEE7PGRwHi5ora77hYnPdFNSprn30LE5

 WXrGgd71oqUXkf75Ytw=

DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=rim2; d=e.blackberry.com;

 b=Ob29t9oVYqQYjo7MC62tC3+TDWTHxfmrcWUzMeUHyIRpPNA5LGf+IPeNN2quUIxqcCV8hnbjPbmk

 hz0Hgbw3aILzg6+5eQDtqbIBl6QIzaGSNk1rHc201/aqsPmiTvqJEny0rs7dyij+mrcNvzLyLjY8

 d/1tg+k2jf77YOHqcmI=;

Received: by omp.email.blackberry.com (PowerMTA(TM) v3.5r15) id hgcj200morc5

 for ; Thu, 17 Mar 2011 13:34:05 -0700 (envelope-from

 )

MIME-Version: 1.0

Content-Type: multipart/mixed; boundary="----msg_border"

Date: Thu, 17 Mar 2011 13:34:05 -0700

From: "BlackBerry"

Reply-To: "BlackBerry"

Subject: Developer News Bytes - New development tool releases!

List-Unsubscribe: ,



X-cid: rimdm.1711.8

X-sgxh1: jJHNLFFHxnuHptQJhu

To: [email protected]

Message-ID: <[email protected]>

理想的には、2番目のリストの登録解除のみが必要ですが、両方を取得して検索することで対処できます。

  0  0


ベストアンサー

preg_match_all("#List-Unsubscribe:(.*)#i", $row['emailHeader'], $matches);

0


  • ^ -行の先頭 $ -行の末尾 m *-すべての行に一致する複数行

// join headers. It's possible headers to be split to 2 rows
$header = preg_replace("@\r\n\[email protected]", " ", $row['emailHeader']);

// i is for case insensitive, m is for multiline
preg_match_all('/^list\\-unsubscribe:(.*)$/mi', $headers, $matches);

0


タイトルとURLをコピーしました