在常规文本文件中进行Base 64解码

时间:2012-10-24 18:26:56

标签: xml regex perl base64 mime

我有一个大文本文件,其中包含我正在解析的常规文本,但是其中有一些部分存在base64编码文本块。我需要解码此文本,以便我的解析器可以读取它。我尝试在我的脚本中使用base64解码器,但是当我有围绕base64文本的常规文本时它不起作用。任何人都有关于我如何撕掉这些部分并解码它们的想法?文本文件很长,并且将包含其中几个base64段。围绕块的唯一匹配是“X-Attachement-ID:xxx”,空行,然后是块,以及后面的行上的“--xxx--”。

我正在使用Perl脚本来解析并读取.txt文件。

下面发布了文本文件的示例剪切。

Content-Type: text/xml; charset=US-ASCII; name="1415160277.xml"
Content-Disposition: attachment; filename="1415160277.xml"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h8oq2dh20

PD94bWwgdmVyc2lvbj0iMS4wImVuY29kaW5nPSJVVEYtOCI/Pg0KPEluZnJpbmdlbWVudCB4c2k6
c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cudGVzdC5jb20vQUNOUyBodHRwOi8vd3d3LnRlc3Qu
Y29tIiB4bWxucz0iaHR0cDovL3d3dy50ZXN0LmNvbS9BQ05TIiB4bWxuczp4c2k9Imh0dHA6Ly93
d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj48Q2FzZT48SUQ+MTQxNTE2MDI3Nzwv
SUQ+PFN0YXR1cz5PcGVuPC9TdGF0dXM+PFNldmVyaXR5Pk5vcm1hbDwvU2V2ZXJpdHk+PC9DYXNl
PjxDb21wbGFpbmFudD48RW50aXR5PnRlc3Q8L0VudGl0eT48Q29udGFjdD50ZXN0IENvcHlyaWdo
dCBJbmZyaW5nZW1lbnQ8L0NvbnRhY3Q+PEFkZHJlc3M+PC9BZGRyZXNzPjxQaG9uZT48L1Bob25l
PjxFbWFpbD50ZXN0QHRlc3QuY29tPC9FbWFpbD48L0NvbXBsYWluYW50PjxTZXJ2aWNlX1Byb3Zp
ZGVyPjxFbnRpdHk+dGVzdDwvRW50aXR5PjxDb250YWN0PnRlc3Q8L0NvbnRhY3Q+PEFkZHJlc3M+
dGVzdA0KPC9BZGRyZXNzPjxQaG9uZT50ZXN0PC9QaG9uZT48RW1haWw+PC9FbWFpbD48L1NlcnZp
Y2VfUHJvdmlkZXI+PFNvdXJjZT48VGltZVN0YW1wPnRlc3Q8L1RpbWVTdGFtcD48SVBfQWRkcmVz
cz50ZXN0PC9JUF9BZGRyZXNzPjxUeXBlPkJpdFRvcnJlbnQ8L1R5cGU+PFVzZXJOYW1lPjwvVXNl
ck5hbWU+PE51bWJlcl9GaWxlcz4xPC9OdW1iZXJfRmlsZXM+PC9Tb3VyY2U+PENvbnRlbnQ+PEl0
ZW0+PFRpdGxlPnRlc3Q8L1RpdGxlPjxJbmZvSGFzaD50ZXN0PC9JbmZvSGFzaD48L0l0ZW0+PC9D
b250ZW50PjxIaXN0b3J5Lz4
--047d7b5d9603ea951104ccd17c87--',
            \'MIME-Version: 1.0
Received: by --- with HTTP; Wed, 24 Oct 2012 10:38:10 -0700 (PDT)
Date: Wed, 24 Oct 2012 10:38:10 -0700

base64块的解码是:

<?xml version="1.0"encoding="UTF-8"?>
<Infringement xsi:schemaLocation="http://www.test.com/ACNS http://www.test.com"     xmlns="http://www.test.com/ACNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Case><ID>1415160277</ID><Status>Open</Status><Severity>Normal</Severity></Case><Complainant><Entity>test</Entity><Contact>test Copyright Infringement</Contact><Address></Address><Phone></Phone><Email>test@test.com</Email></Complainant><Service_Provider><Entity>test</Entity><Contact>test</Contact><Address>test
</Address><Phone>test</Phone><Email></Email></Service_Provider><Source><TimeStamp>test</TimeStamp><IP_Address>test</IP_Address><Type>BitTorrent</Type><UserName></UserName><Number_Files>1</Number_Files></Source><Content><Item><Title>test</Title><InfoHash>test</InfoHash></Item></Content><History/><Notes/></Infringement>

1 个答案:

答案 0 :(得分:4)

我建议您使用Email::MIME之类的模块来解析您的电子邮件。它会自动解析和解码您的附件。