提问人:Saeid Dadkhah 提问时间:5/6/2023 更新时间:5/6/2023 访问量:35
使用 Html Purifier 从提交的 html 页面内容中提取样式块
Extract style block from submited html page content with Html Purifier
问:
如何使用html净化器提取块样式。
我尝试使用以下代码来提取样式表单html内容。
但我不能;<style></style>
$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);
答:
2赞
shemjay
5/6/2023
#1
我不太确定我是否理解你的问题。也许你可以更深入一点。
据我所知,您提供的代码是正确的,它应该从 HTML 内容中提取块。但是,提取的样式的输出可能与预期不符。<style>
该变量将包含提取的样式块的关联数组,其中键是样式块在输入 HTML 字符串中的位置,值是样式块的内容。
这是我的意思的一个例子:$styles
$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 代码中。
评论
0赞
Saeid Dadkhah
5/6/2023
感谢。但是我的$styles数组是空的。我不知道问题出在哪里。
评论