我正在使用php通过imap接收电子邮件,而我返回了邮件的正文。我需要从此消息中提取一些客户信息,例如姓名,电子邮件,日期和相关公寓。
--_av-ml1j40HUdHU5gAwKk3Xhrg
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
--- Para responder este email, clique no botão azul abaixo ---
Fernando, há um interessado em alugar seu imóvel!
COBERTURA Fantástica de FRENTE MAR! Para 6, Wifi, Ar C., Churrasq
<https://www.temporadalivre.com/conversas?id_hash=Guoqweasdd8xpu9jqlGN>
*Dados do Interessado*
*Vagner Fulano*
*vagner.spqweor01@gmail.com*
*Período*
21 de Dezembro de 2019 a
26 de Dezembro de 2019
(*5 diárias*)
*Hóspedes*
2 adultos, 1 criança
*Telefone*
44999238255
*País*
Brasil
(localização por estimativa)
*Mensagem*
-
Clique aqui para responder →
<https://www.temporadalivre.com/conversas?id_hash=GuoieVQACd8xpu9jqlGN>
上面是我可以从电子邮件中获得的部分字符串。也许,另一部分可以帮助您:
<table style="border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; width: 100%; padding: 0;"><tr style="vertical-align: top; text-align: left; padding: 0;" align="left"><th style="color: #0a0a0a; font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 150%; font-size: 16px; margin: 0; padding: 0;" align="left">
<div style="color: #daa520;">
<b>Dados do Interessado</b><br /></div>
<div style="color: #808000;">
<b>Vagner Splendor</b><br />
<span style="font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 1.3; text-decoration: none; margin: 0; padding: 0; font-size: 0.8em"><i>vagner.splendor01@gmail.com</i></span><br /><br /></div>
<div style="color: #daa520;"><b>Período</b><br /></div>
<div style="color: #808000;">21 de Dezembro de 2019 a <br>26 de Dezembro de 2019<br>(<b>5 diárias</b>) <br /><br /></div>
<div style="color: #daa520;"><b>Hóspedes</b><br /></div>
<div style="color: #808000;"> 2 adultos, 1 criança<br /><br /></div>
<div style="color: #daa520;"><b>Telefone</b><br /></div>
<div style="color: #808000;">44995528255</div><br />
<div style="color: #daa520;"><b>País</b><br /></div>
<div style="color: #808000;">Brasil<br /></div>
<div style="color: #808000; font-size: 14px">(localização por estimativa)<br /><br /></div>
<div style="color: #daa520;"><b>Mensagem</b><br /></div>
<div style="color: #808000;">-</div>
</th>
</tr></table></th>
</tr></tbody></table>
请问我有解决方案吗?我不知道该如何使用正则表达式。
答案 0 :(得分:0)
这是非常无组织的,我很肯定我们可能不会以任何有趣的方式最终解决这个问题,如果可能的话,也许我们应该寻找方法来改变这个问题,但是如果那个选项不起作用的话,示例表达式为:
<i>(.+?)<\/i>|(<div style="color: #808000;">)[\s\S]*?<b>(.+?)<\/b><br
使用这两个捕获组(.+?)
捕获电子邮件和姓名,其余脚本可以编写脚本。
$re = '/<i>(.+?)<\/i>|(<div style="color: #808000;">)[\s\S]*?<b>(.+?)<\/b><br/m';
$str = ' <table style="border-spacing: 0; border-collapse: collapse; vertical-align: top; text-align: left; width: 100%; padding: 0;"><tr style="vertical-align: top; text-align: left; padding: 0;" align="left"><th style="color: #0a0a0a; font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 150%; font-size: 16px; margin: 0; padding: 0;" align="left">
<div style="color: #daa520;">
<b>Dados do Interessado</b><br /></div>
<div style="color: #808000;">
<b>Vagner Splendor</b><br />
<span style="font-family: Helvetica, Arial, sans-serif; font-weight: normal; text-align: left; line-height: 1.3; text-decoration: none; margin: 0; padding: 0; font-size: 0.8em"><i>vagner.splendor01@gmail.com</i></span><br /><br /></div>
<div style="color: #daa520;"><b>Período</b><br /></div>
<div style="color: #808000;">21 de Dezembro de 2019 a <br>26 de Dezembro de 2019<br>(<b>5 diárias</b>) <br /><br /></div>
<div style="color: #daa520;"><b>Hóspedes</b><br /></div>
<div style="color: #808000;"> 2 adultos, 1 criança<br /><br /></div>
<div style="color: #daa520;"><b>Telefone</b><br /></div>
<div style="color: #808000;">44995528255</div><br />
<div style="color: #daa520;"><b>País</b><br /></div>
<div style="color: #808000;">Brasil<br /></div>
<div style="color: #808000; font-size: 14px">(localização por estimativa)<br /><br /></div>
<div style="color: #daa520;"><b>Mensagem</b><br /></div>
<div style="color: #808000;">-</div>
</th>
</tr></table></th>
</tr></tbody></table>';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);