使用 Html Purifier 从提交的 html 页面内容中提取样式块

问题描述 投票:0回答:1

如何使用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);
php html css htmlpurifier
1个回答
2
投票

我不太确定我是否理解你的问题。也许你可以更深入一点。

据我所知,您提供的代码是正确的,它应该从 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 代码中。

© www.soinside.com 2019 - 2024. All rights reserved.