用PHP正则表达式从电子邮件中读取链接的问题

时间:2012-07-21 16:16:05

标签: php regex email imap

我遇到了这个非常奇怪的问题,我似乎无法弄明白。

我有一个脚本可以读取电子邮件并从电子邮件中获取用户名和链接(或多个链接)并将其放入数组中。由于某种原因,链接不断被切断,因为“=”由于某种原因不断添加。当我在电子邮件中执行字符串替换时,在执行正则表达式之前,它不会替换“=”。知道这个问题可能是什么?

以下是电子邮件示例:

 @bill
 http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphones-bezel-a-massive-notification-light/?grcc=88888Z0ZwdgtZ0Z0Z0Z0Z0&grcc2=835637c33f965e6cdd34c87219233711~1342828462249~fca4fa8af1286d8a77f26033fdeed202~510f37324b14c50a5e9121f955fac3fa~1342747216490~0~0~0~0~0~0~0~0~7~3~

当我回复消息的正文时,我得到了:

 --00248c6a671acfdb9c04c558d753 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable @bill http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphon= es-bezel-a-massive-notification-light/?grcc=3D88888Z0ZwdgtZ0Z0Z0Z0Z0&grcc2= =3D835637c33f965e6cdd34c87219233711~1342828462249~fca4fa8af1286d8a77f26033f= deed202~510f37324b14c50a5e9121f955fac3fa~1342747216490~0~0~0~0~0~0~0~0~7~3~ --00248c6a671acfdb9c04c558d753 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable @bill

注意破坏链接的“=”。 我的正则表达式产生:

 Array ( [0] => http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphon= [1] => http://techcrunch.com/2012/07/2= [2] => http://techcrunch.com/2012= ) 

当我复制并粘贴字符串并通过字符串替换运行它时它会替换“=”

知道发生了什么事吗?

由于

1 个答案:

答案 0 :(得分:2)

文本采用名为“Quoted Printable”的编码。首先将其解码为普通文本:

http://php.net/manual/en/function.quoted-printable-decode.php