我正在尝试清理从其他来源(主要是电子邮件正文)导入的一些HTML值。理想情况下,我希望能够剥离<style>
和<link>
标记,但也可以将它们的样式(假设链接标记指向样式表)应用于值中的相应元素。
我目前正试图通过tidy来实现这一目标。如果归结为它,我可以在不应用样式的情况下去掉标签。
答案 0 :(得分:1)
你可以使用php的simple-xml functions将样式分配给你的标记。
或写一些自定义实现来操纵html(这不是一个好习惯tbh)如果你不想进入simplexml lib。
$dirtyInput = '<!-- your html string -->';
$regex = '/<style[^>]>(.*?)</style>/is';
if (preg_match_all($regex, $dirtyInput, $inlineStyles)) {
// your inline styles will be in $inlineStyles
$cleanedOutput = preg_replace($regex . 'g', '', $dirtyInput );
}
$regex = '/<link[^>]*href="([^"]+)"*[^>]*>/is';
if (preg_match_all($regex, $dirtyInput, $externalFiles)) {
// hrefs of external stylesheets $externalFiles;
$cleanedOutput = preg_replace($regex . 'g', '', $cleanedOutput);
}
// more code to read styles from external css files and apply their styles and the inline styles to your markup (not a quick task...)