timsky
Осваивающий
- Сообщения
- 93
- Репутация
- 28
Уже часа 3 голову ломаю, но никак не могу слепить универсальную регулярку для выдергивания Content-Type: text/plain и Content-Type: text/html в письме. Вот пример тела письма:
Мне нужно это:
Ну или вместе с тегами Content-Type: / charset / Content-Transfer-Encoding и прочими, относящимися к тексту письма.
То же самое, соответственно, должно сработать и для Content-Type: text/html.
Нашел вот такой скрипт Tipulatiod и CreatoR, но он работает только в половине реальных случаев :( Плюс к тому же он возвращает постоянно разноразмерный массив, а разбирать, как он фунциклирует уже сил нет. Нечто замудренное...
И вообще каким макаром указать RegExp не глотать все подряд, а остановиться на первом совпадении?
Т.е. я пробовал вот такую регулярку: (?is)Content-Type:\s+text/plain(.*)Content-Type:.* и многие прочие варианты с greedy/не-greedy, lookbehind ит.д..., но все равно PCRE не обращает внимания на то, что мне нужен контент до следующего Content-Type:
Вобщем, я в тупике.
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: Multipart/Alternative;
boundary="------------Boundary-00=_Q4V2LHG2QL8000000000"
--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/HTML;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" http-equiv=3DContent-Typ=
e>
<META name=3DGENERATOR content=3D"IncrediMail 1.0">
<STYLE>v\:* {
BEHAVIOR: url (#default#vml)
}
</STYLE>
<style>v\:* {
BEHAVIOR: url (#default#vml)
}
</style><BASE href=3D"file://C:\"></HEAD> <BODY style=3D"MARGIN: 10px 10p=
x 10px 47px; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Arial; BACKGROUND-POS=
ITION: left top; FONT-SIZE: 10pt" background=3Dcid:1A691D9A-2A07-410B-A9FB=
-5027D63B2D2D scroll=3Dyes bgColor=3D#edf1f0 SIGCOLOR=3D"11031552" INCREDI=
FIXEDFORIMOL=3D"true"> <TABLE id=3DINCREDIMAINTABLE border=3D0 cellSpacin=
g=3D0 cellPadding=3D2 width=3D"100%"> <TBODY> <TR> <TD style=3D"DIRECTI=
ON: ltr; FONT-SIZE: 10pt" dir=3Dltr id=3DINCREDITEXTREGION vAlign=3Dtop wi=
dth=3D"100%"> <DIV>
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
</DIV></TD></TR> <TR> <TD id=3DINCREDIFOOTER width=3D"100%"> <TABLE ce=
llSpacing=3D0 cellPadding=3D0 width=3D"100%"> <TBODY> <TR> <TD width=3D=
"100%"></TD> <TD id=3DINCREDISOUND vAlign=3Dbottom align=3Dmiddle></TD>=
<TD id=3DINCREDIANIM vAlign=3Dbottom align=3Dmiddle></TD></TR></TBODY></=
TABLE></TD></TR></TBODY></TABLE><SPAN id=3DIncrediStamp><A href=3D"http://=
www.incredimail.com/?id=3D606430&rui=3D88054161"><SPAN name=3D"imgCach=
e" border=3D"0"><IMG border=3D0 alt=3D"FREE Animations for your email - by=
IncrediMail! Click Here!" src=3D"cid:97504DF8-22EE-434A-A144-9EA9FAB3F4FF=
"></SPAN></A></SPAN></BODY></HTML>
--------------Boundary-00=_Q4V2LHG2QL8000000000--
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/jpeg; name="23.jpg"
Content-Transfer-Encoding: base64
Content-ID: <1A691D9A-2A07-410B-A9FB-5027D63B2D2D>
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAJgAA/+4AIUFkb2JlAGTAAAAAAQMA
EOS/pQ5lDkjyX8Q/qHL8Q5L+lf0/q7vUL3Q5L+BeyK/i/gXd6he6HJfwL2RX8X8C7uX4vdDkv4F7
fq7l/F/AhyXb/EOZXv8AaHJfvqF7/aHJdv8Q5le/2hyX8Xb6he/wBocl2/mV7/aHJfvqF7
/aHJdv8AEOZXv9ocl/F2+oXv9ocl2/+ocyhyR5D6X8Q/qHL8Q5L+lDmUOSPJf+ocvkv6UO
ZQ5I8l/EP6hy/EOS/pX9P6u71C90OS/gXsiv4v4F3eoXuhyX8C9kV/F/Au7l+L3Q5L+Be36u5fxf
wIcl2/mV7/AGhyX8Xb6he/2hyXb/EOZXv9ocl/F2+oXv8AaHJdv8Q5le/2hyX8X8/F/9k=
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/gif; name="stampa_girl_line_en.gif"
Content-Transfer-Encoding: base64
Content-ID: <97504DF8-22EE-434A-A144-9EA9FAB3F4FF>
R0lGODlh3AGMANUAAPb6/JCLqvaVHrkZTQEAAPI6X9iIT7JpYPmxmXWIxIUROax2i85OcmYPMcjV
5tnZ2bjI3am30NB5FWt7trNmCyxQggAA/1lll9eQfFBcj5ZWYv3Os5Sm6HVzm4aY2AJFd+qhhvS6
o2FwqPe3TQs3W8Kzt9rk79milJCozKiirMJ9cMGUm+93jc7GyKG0929FRHhsdQAAAAAAAAAAAAAA
G8BIC8uxXM7mfM7oHMiQbDlAC7GjHA+AnM7yPM/0DMXrXAX2m8/6vM/83M/+/M8AHdACPdAEXdAG
fdAIndAKvdD9PM71/NAQHdH3zKviEM8RfdEYrc6/TNH1YNEZ/dEgrb0TzdHPEFEhfdIoDQA1SdL0
EAFVQ6UwHdMyPdM0baVkEAQAOw==
--------------Boundary-00=_Q4V2Q7B2QL8000000000--
.
Content-Type: Multipart/Alternative;
boundary="------------Boundary-00=_Q4V2LHG2QL8000000000"
--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
--------------Boundary-00=_Q4V2LHG2QL8000000000
Content-Type: Text/HTML;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" http-equiv=3DContent-Typ=
e>
<META name=3DGENERATOR content=3D"IncrediMail 1.0">
<STYLE>v\:* {
BEHAVIOR: url (#default#vml)
}
</STYLE>
<style>v\:* {
BEHAVIOR: url (#default#vml)
}
</style><BASE href=3D"file://C:\"></HEAD> <BODY style=3D"MARGIN: 10px 10p=
x 10px 47px; BACKGROUND-REPEAT: repeat; FONT-FAMILY: Arial; BACKGROUND-POS=
ITION: left top; FONT-SIZE: 10pt" background=3Dcid:1A691D9A-2A07-410B-A9FB=
-5027D63B2D2D scroll=3Dyes bgColor=3D#edf1f0 SIGCOLOR=3D"11031552" INCREDI=
FIXEDFORIMOL=3D"true"> <TABLE id=3DINCREDIMAINTABLE border=3D0 cellSpacin=
g=3D0 cellPadding=3D2 width=3D"100%"> <TBODY> <TR> <TD style=3D"DIRECTI=
ON: ltr; FONT-SIZE: 10pt" dir=3Dltr id=3DINCREDITEXTREGION vAlign=3Dtop wi=
dth=3D"100%"> <DIV>
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
</DIV></TD></TR> <TR> <TD id=3DINCREDIFOOTER width=3D"100%"> <TABLE ce=
llSpacing=3D0 cellPadding=3D0 width=3D"100%"> <TBODY> <TR> <TD width=3D=
"100%"></TD> <TD id=3DINCREDISOUND vAlign=3Dbottom align=3Dmiddle></TD>=
<TD id=3DINCREDIANIM vAlign=3Dbottom align=3Dmiddle></TD></TR></TBODY></=
TABLE></TD></TR></TBODY></TABLE><SPAN id=3DIncrediStamp><A href=3D"http://=
www.incredimail.com/?id=3D606430&rui=3D88054161"><SPAN name=3D"imgCach=
e" border=3D"0"><IMG border=3D0 alt=3D"FREE Animations for your email - by=
IncrediMail! Click Here!" src=3D"cid:97504DF8-22EE-434A-A144-9EA9FAB3F4FF=
"></SPAN></A></SPAN></BODY></HTML>
--------------Boundary-00=_Q4V2LHG2QL8000000000--
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/jpeg; name="23.jpg"
Content-Transfer-Encoding: base64
Content-ID: <1A691D9A-2A07-410B-A9FB-5027D63B2D2D>
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAJgAA/+4AIUFkb2JlAGTAAAAAAQMA
EOS/pQ5lDkjyX8Q/qHL8Q5L+lf0/q7vUL3Q5L+BeyK/i/gXd6he6HJfwL2RX8X8C7uX4vdDkv4F7
fq7l/F/AhyXb/EOZXv8AaHJfvqF7/aHJdv8Q5le/2hyX8Xb6he/wBocl2/mV7/aHJfvqF7
/aHJdv8AEOZXv9ocl/F2+oXv9ocl2/+ocyhyR5D6X8Q/qHL8Q5L+lDmUOSPJf+ocvkv6UO
ZQ5I8l/EP6hy/EOS/pX9P6u71C90OS/gXsiv4v4F3eoXuhyX8C9kV/F/Au7l+L3Q5L+Be36u5fxf
wIcl2/mV7/AGhyX8Xb6he/2hyXb/EOZXv9ocl/F2+oXv8AaHJdv8Q5le/2hyX8X8/F/9k=
--------------Boundary-00=_Q4V2Q7B2QL8000000000
Content-Type: image/gif; name="stampa_girl_line_en.gif"
Content-Transfer-Encoding: base64
Content-ID: <97504DF8-22EE-434A-A144-9EA9FAB3F4FF>
R0lGODlh3AGMANUAAPb6/JCLqvaVHrkZTQEAAPI6X9iIT7JpYPmxmXWIxIUROax2i85OcmYPMcjV
5tnZ2bjI3am30NB5FWt7trNmCyxQggAA/1lll9eQfFBcj5ZWYv3Os5Sm6HVzm4aY2AJFd+qhhvS6
o2FwqPe3TQs3W8Kzt9rk79milJCozKiirMJ9cMGUm+93jc7GyKG0929FRHhsdQAAAAAAAAAAAAAA
G8BIC8uxXM7mfM7oHMiQbDlAC7GjHA+AnM7yPM/0DMXrXAX2m8/6vM/83M/+/M8AHdACPdAEXdAG
fdAIndAKvdD9PM71/NAQHdH3zKviEM8RfdEYrc6/TNH1YNEZ/dEgrb0TzdHPEFEhfdIoDQA1SdL0
EAFVQ6UwHdMyPdM0baVkEAQAOw==
--------------Boundary-00=_Q4V2Q7B2QL8000000000--
.
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
Здесь, например, какой-нибудь текст!
То же самое, соответственно, должно сработать и для Content-Type: text/html.
Нашел вот такой скрипт Tipulatiod и CreatoR, но он работает только в половине реальных случаев :( Плюс к тому же он возвращает постоянно разноразмерный массив, а разбирать, как он фунциклирует уже сил нет. Нечто замудренное...
И вообще каким макаром указать RegExp не глотать все подряд, а остановиться на первом совпадении?
Т.е. я пробовал вот такую регулярку: (?is)Content-Type:\s+text/plain(.*)Content-Type:.* и многие прочие варианты с greedy/не-greedy, lookbehind ит.д..., но все равно PCRE не обращает внимания на то, что мне нужен контент до следующего Content-Type:
Вобщем, я в тупике.