我需要一种方法来从没有属性(类/样式)的电子邮件HTML。
目前正在尝试以下操作:
$crawler = new Crawler();
$crawler->addHtmlContent($mail->textHtml);
$html = '';
$nodes = $crawler->filter('body > *'); //only stuff inside body
foreach ($crawler as $domElement) {
//remove somehow class+styles ?
$html .= $domElement->ownerDocument->saveHTML($domElement);
}
echo $html; //outputs everything inside body (currently with attributes)
正如我已经读到的许多问题一样,regex并不是一个很好的解决方案,因为它可能会破坏东西。
1条答案
按热度按时间mrfwxfqh1#
我知道这个问题是从一段时间前,但它仍然是相关的,我想提供一个解决方案,可以帮助其他人谁遇到这个问题。
要使用Symfony DomCrawler从HTML内容中删除属性(类/样式),可以使用DOMElement的
removeAttribute
函数。下面是一个代码片段:一些IDE(如PHPStorm)可能会显示警告,“Potentially polymorphic call. DOMNode does not have members in its hierarchy”。但是,您可以安全地忽略此警告,原因如下:
removeAttribute
函数。foreach
循环Crawler
对象时,$domElement
项类型为DOMNode|mixed
,但也可能是DOMElement
。要处理此问题,可以使用instanceof
检查,如下所示: