使用PHP / HTMLPurifier删除不完整的HTML标记

时间:2013-09-25 02:48:08

标签: php html-parsing html-email htmlpurifier

给出以下html:

<p>I am a paragraph</p>

<ul>
<li>Item</li>
<li>Item 2</li>
</ul>

<div class="special_div_from_email_client">
<span>Some text

我需要删除不完整的标记。

我们要做的是通过在原始邮件中放置自定义字符串来解析电子邮件,以便如果它包含在响应中,则可以将其删除。假设如果电子邮件程序将原始邮件包含在任何html标记中,我们希望删除封闭的html标记。

2 个答案:

答案 0 :(得分:2)

这可能不是您正在寻找的内容,但我发现删除无效标记有时会破坏HTML电子邮件的其余部分(特别是TRTD标记重新使用表格进行布局。)

最好使用其中一个库/工具为您完成/修复HTML。然后,您可以在有效的HTML中遍历DOM以删除/修改元素。

这可能看起来很长,但我希望这会有所帮助。

答案 1 :(得分:0)

你提到你把一个字符串放在原文中。如果它放在原始邮件正文之前,那么你不能这样做一个strpos和substr来修剪你的邮件吗?这是一个我刚刚拼凑的函数作为例子:

// myKey can be a comment before the body of your message, $html is your email content
function trim($html, $myKey){
  $htmlTrimmed = $html;
  if (strpos($html, $myKey)!==false){
    $origStart = strpos($html, $myKey);
    $htmlTrimmed = substr($html, 0, $origStart);
  }
  return $htmlTrimmed;
} 

我没有测试它,但你明白了。