标准输入流(stdin)的内容在换行符和尾随"="的影响下被破坏了,这显然会破坏我需要发布的URL。
我需要从电子邮件中提取一个URL/链接,然后发布这个URL。因此,我正在使用我在互联网上看到的标准代码片段,将我的电子邮件通过管道传输到cpanel中的php脚本:
$fd = fopen("php://stdin", "r");
$email = ""; // This will be the variable holding the data.
while (!feof($fd)) { $email .= trim(fread($fd, 1024)); }
fclose($fd);
然后将电子邮件的内容转储到文件"pipemail.txt"中,以便检查并确保一切正常工作。
$fdw = fopen("pipemail.txt", "w+");
fwrite($fdw, $email);
fclose($fdw);
输出结果如下:
...
<table style=3D"width:100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0=
"><tbody><tr><td><table style=3D"background-color:#ffffff;color:#3c445a;fon=
t-family:arial;font-size:10px;font-weight:bold;width:100%" cellpadding=3D"0=
" cellspacing=3D"0">
...
我已经花了一天多的时间来解决这个问题,但我完全被卡住了。我尝试从传入的行中删除尾随的"=",但它没有给我期望的结果。相反,它似乎从内容中随机删除"="。我猜想这不是随机的,只是因为它不符合我的预期,所以看起来是随机的。如果它只在1024 k/char行的最后一个字符处出现时才会删除它,那么换行符从哪里来?我对这是如何工作的知之甚少,无法自己解决这个问题。
为什么会出现换行?"="来自哪里?有没有人有什么建议?
=
字符吗?行末的=
是在quoted-printable
格式中使用的,这种格式通常用于电子邮件。 - Barmar=3D
是在 quoted-printable 中表示=
的方式。 - Barmar