如何使用html净化器提取块样式,例如
<style></style>
。
我尝试使用下面的代码从 html 内容中提取样式。
但我不能;
$config = \HTMLPurifier_Config::createDefault();
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
$config->set('Cache.SerializerPath', storage_path('app/purifier'));
$config->set('Filter.ExtractStyleBlocks', true);
$purifier = new \HTMLPurifier($config);
$dirty = '<style>body {color:#F00;}</style> Some text';
$html = $purifier->purify($dirty);
$styles = $purifier->context->get('StyleBlocks');
var_dump($styles);
我不太确定我是否理解你的问题。也许你可以更深入一点。
据我所知,您提供的代码是正确的,它应该从 HTML 内容中提取
<style>
块。然而,提取的样式的输出可能不符合预期。
$styles
变量将包含提取的样式块的关联数组,其中键是样式块在输入 HTML 字符串中的位置,值是样式块的内容。
这是我的意思的一个例子:
$dirty = '<style>body {color:#F00;}</style> Some text';
$html = $purifier->purify($dirty);
$styles = $purifier->context->get('StyleBlocks');
foreach ($styles as $position => $style) {
echo "Style block at position $position: $style\n";
}
这应该给你以下信息:
Style block at position 0: body {color:#F00;}
如果您想在应用程序中使用提取的样式,可以将它们作为 HTML 代码中的内联样式输出,也可以将它们保存到文件中并将该文件包含在 HTML 代码中。