给出以下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标记。
答案 0 :(得分:2)
这可能不是您正在寻找的内容,但我发现删除无效标记有时会破坏HTML电子邮件的其余部分(特别是TR
和TD
标记重新使用表格进行布局。)
最好使用其中一个库/工具为您完成/修复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;
}
我没有测试它,但你明白了。