【问题标题】:How to remove email headers from message body如何从邮件正文中删除电子邮件标题
【发布时间】:2014-10-20 00:03:05
【问题描述】:

我正在处理电子邮件解析脚本,但遇到了一些问题。当电子邮件被转发时,它会将电子邮件标题插入到邮件正文中,例如 From、To、Sent、Subject。我正在尝试剥离它,但它没有剥离。我尝试了一些方法,但没有运气。有什么建议吗?

//php

$message = str_replace("/^From: (.*)/", "", $message);
$message = str_replace("/^To: (.*)/", "", $message);
$message = str_replace("/^Subject: (.*)/", "", $message);

我也试过 $message = str_replace("From: $from", "", $message); //$from 从头部获取。

【问题讨论】:

  • 您可以粘贴您正在使用的字符串 ($message) 吗?
  • 另外,当您可能想要改为 preg_replace() 时,您看起来正在尝试执行 str_replace()

标签: php


【解决方案1】:

我不确定您是否对此仍有疑问,但您应该使用 preg_replace 函数(或 preg_replace_all,如果您试图定位多个匹配项)。您的代码应如下所示:

    preg_replace("/^From: (.*)/", "", $message, $from);
    preg_replace("/^To: (.*)/", "", $message, $to);
    preg_replace("/^Subject: (.*)/", "", $message, $subject);

当您尝试输出变量时,请使用 print(r) 函数:

    print_r($from, true);
    print_r($to, true);
    print_r($subject, true);

它可能会以多维数组的形式出现,您可以从数组中回显响应。

    echo $from[1][0]; // It may be in a different array location.       
    echo $to[1][0]; // It may be in a different array location.       
    echo $subject[1][0]; // It may be in a different array location.       

您可能需要调整数组位置 ([1][0]) 以输出正确的数据。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2013-09-04
    • 2017-01-16
    • 2010-12-08
    • 1970-01-01
    相关资源
    最近更新 更多