Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何剥离关键短语和结束标记之间的所有内容?_Php_Regex - Fatal编程技术网

Php 如何剥离关键短语和结束标记之间的所有内容?

Php 如何剥离关键短语和结束标记之间的所有内容?,php,regex,Php,Regex,我试图剥离关键短语和结束标记之间的所有内容,但由于某种原因,它不起作用。我总是得到空白数据。我试过很多不同的方法,但都不走运 基本上,我有一个脚本,可以连接到IMAP并将电子邮件作为服务票证存储到MySQL中。它工作得很好,但我正在尝试剥离除用户回复之外的所有内容,因为当前如果用户回复电子邮件,它会将整个电子邮件重新插入MySQL。我在所有发送的电子邮件的顶部添加了一个关键短语 结构如下: --Reply below this line to respond-- --------------

我试图剥离关键短语和结束标记之间的所有内容,但由于某种原因,它不起作用。我总是得到空白数据。我试过很多不同的方法,但都不走运

基本上,我有一个脚本,可以连接到IMAP并将电子邮件作为服务票证存储到MySQL中。它工作得很好,但我正在尝试剥离除用户回复之外的所有内容,因为当前如果用户回复电子邮件,它会将整个电子邮件重新插入MySQL。我在所有发送的电子邮件的顶部添加了一个关键短语

  • 结构如下:

     --Reply below this line to respond--
     ------------------------------------------------------------------------------------
    
    Email body message...
    
  • 回复邮件时,它会变成:

    New Message reply......
    
    --Reply below this line to respond--
    
    old message body.
    
  • 我只想插入新的回复信息

  • 到目前为止,我得到的是:

    $message = strip_tags($message, "<br><div><p><u><hr></section>");
    
    $message=preg_replace("</p>", "br /", $message);
    
    $message=preg_replace('#--REPLY above this line to respond--(.*?)</section>)#s', ' ', $message);
    
    $message=clean("<br/><hr><u>Received On $rep_date / $from_email</u><br><br/>$message");
    
    $message=strip_标签($message,

    ); $message=preg_replace(“

    ”、“br/”、$message); $message=preg#u replace('#--在此行上方回复--(.*)#s','$message); $message=clean(“

    在$rep_date/$from_email

    $message收到”);
    它插入接收日期和发件人,但
    $message
    为空

    如果我删除
    $message=preg_replace('#--REPLY
    在这一行上方,以
    respond--(.*))#s','','$message)它插入整个电子邮件


    关于我做错了什么有什么建议吗?

    不需要正则表达式。在这个场景中应该可以找到工作

    // After cleaning the message...
    $message_parts = explode("--Reply below this line to respond--", $message, 2);
    $message = $message_parts[0];
    
    如果您确实觉得需要使用正则表达式,可以使用而不是explode。如果需要区分大小写或其他类似细节,使用正则表达式可能会更有帮助

    编辑:哈哈!您搜索“回复在此行上方”,但消息包含“回复在此行下方”。
    如果搜索错误的字符串,则永远不会匹配它


    下面是一个固定版本的示例:

    Hmm我们可以使用关键字和substr函数来提取所需的信息:

    $message = substr($message, strpos($message,'New Message'), strpos($message,'--Reply') );
    

    /--(.*)/s
    这就是你要问的吗?
    $message=preg\u replace(“

    ”,“br/”,$message)
    在我脑海中敲响了警钟。当然,它是有效的,但我严重怀疑您能否告诉我为什么需要使用
    br/
    而不是

    。您能否给出一个真实的示例以及您实际想要删除的内容?你的问题让人困惑,我知道这有点让人困惑。我会马上更新我的问题。非常感谢。@NiettheDarkAbsol我正在使用br,因为出于某种原因,在使用outlook回复时,它将
    替换为
    我尝试了您的建议,但它仍然不断插入空白:(还有其他建议吗?呜呜,对不起,我在上面和下面犯了错误..应该在上面。我正在查看您的演示,非常感谢。如果我让它在我这边工作,我会告诉您的。