正则表达式从 php imap 的电子邮件正文中提取 base64 编码部分
Regex to extract base64 encoded parts from email body from php imap
我在下面有以下内容,它是一个电子邮件正文,我只想从 PHP 中提取 base64
编码的文件。我在想我可以使用正则表达式来提取 base64 部分,这样我就可以解码它们,例如
preg_match('/Content-Transfer-Encoding: base64\s(.*)\sContent-Type:/', $message['body'], $matches);
echo base64_decode($matches[0]);
但是我没有得到任何匹配项,因为我认为我的正则表达式不起作用。理想情况下,我想捕获在 'Content-Transfer-Encoding:' 之后开始并以另一个 'Content-Type:' 部分开始结束的每个部分。我的问题是,如何对所有 base64 部分进行正则表达式?例如
Content-Transfer-Encoding
:(将此部分捕获为匹配项)内容类型:
以下是消息的一部分,完整的字符串可以在这里找到:
--_004_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_ Content-Type: multipart/alternative; boundary="_000_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_" --_000_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFBsZWFzZSBmaW5kIHRoZSBhdHRhY2hlZCBQRlMgZXJyb3IgUmVwb3J0DQoKLS0tLS0tLS0t LQpCJlEgcGxjClJlZ2lzdGVyZWQgT2ZmaWNlOiBCJlEgSG91c2UsIENoZXN0bnV0IEF2ZW51ZSwg Q2hhbmRsZXJzIEZvcmQsIEVhc3RsZWlnaCwgSGFtcHNoaXJlLCBTTzUzIDNMRQpCdXkgT25saW5l IE5PVyBhdCB3d3cuZGl5LmNvbSBvciBmb2xsb3cgQiZRIG9uIEZhY2Vib29rIHd3dy5mYWNlYm9v...
输出6个解码部分
$result=[];
preg_match_all('/Content-Transfer-Encoding: base64\s(.*?)\s--/', $message['body'], $matches);
foreach ($matches[1] as $base) {
$result[] = base64_decode($base);
}
print_r($result);
我在下面有以下内容,它是一个电子邮件正文,我只想从 PHP 中提取 base64
编码的文件。我在想我可以使用正则表达式来提取 base64 部分,这样我就可以解码它们,例如
preg_match('/Content-Transfer-Encoding: base64\s(.*)\sContent-Type:/', $message['body'], $matches);
echo base64_decode($matches[0]);
但是我没有得到任何匹配项,因为我认为我的正则表达式不起作用。理想情况下,我想捕获在 'Content-Transfer-Encoding:' 之后开始并以另一个 'Content-Type:' 部分开始结束的每个部分。我的问题是,如何对所有 base64 部分进行正则表达式?例如
Content-Transfer-Encoding
:(将此部分捕获为匹配项)内容类型:
以下是消息的一部分,完整的字符串可以在这里找到:
--_004_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_ Content-Type: multipart/alternative; boundary="_000_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_" --_000_D16F6E4A2986D34F9D752E3564EAC46F359618EFAPP1197ghakfplc_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFBsZWFzZSBmaW5kIHRoZSBhdHRhY2hlZCBQRlMgZXJyb3IgUmVwb3J0DQoKLS0tLS0tLS0t LQpCJlEgcGxjClJlZ2lzdGVyZWQgT2ZmaWNlOiBCJlEgSG91c2UsIENoZXN0bnV0IEF2ZW51ZSwg Q2hhbmRsZXJzIEZvcmQsIEVhc3RsZWlnaCwgSGFtcHNoaXJlLCBTTzUzIDNMRQpCdXkgT25saW5l IE5PVyBhdCB3d3cuZGl5LmNvbSBvciBmb2xsb3cgQiZRIG9uIEZhY2Vib29rIHd3dy5mYWNlYm9v...
输出6个解码部分
$result=[];
preg_match_all('/Content-Transfer-Encoding: base64\s(.*?)\s--/', $message['body'], $matches);
foreach ($matches[1] as $base) {
$result[] = base64_decode($base);
}
print_r($result);