Static class method, Uniform-Guard and Field-Method to filter your "dirty" HTML inputs to "clean" HTML.
strip_tags and PHP Input Filter are not good enough for you? Installing a plugin that has a dependency with lots of code does not bother you? You are willing to take the performance hit if you use it? Read on then...
- unzip master.zip as folder
site/plugins/kirby3-htmlpurifier
or git submodule add https://github.com/bnomei/kirby3-htmlpurifier.git site/plugins/kirby3-htmlpurifier
orcomposer require bnomei/kirby3-htmlpurifier
$cleanHtml = \Bnomei\HtmlPurifier::purify($dirtyHtml);
Because of the plugin loading order the htmlPurifyGuard
will only be available with composer installations of this plugin.
$form = new \Uniform\Form;
if (kirby()->request()->is('POST')) {
$form->honeypotGuard() // needs to be called explicitly now
->htmlPurifyGuard(); // purified all data
if ($form->success()) {
// ...
}
}
$dirtHtml = (string) $page->myfield();
$cleanHtml = (string) $page->myfield()->htmlPurify();
$cleanHtml = (string) $page->myfield()->kirbytext()->htmlPurify();
If you want to make extra sure your html output to headless is valid html you can purify your fields. Be advised that this will come with a performance penalty since purification is no simple task.
⚠️ All proprietary elements (<template>
, ...) and attributes (srcset
,sizes
,data-*
,x-*:
,@*:
, ...) will be removed!
KQL Query
{
"query": "page('photography')",
"select": {
"url": true,
"title": true,
"textWithPurifiedHtml": "page.text.kirbytext.htmlPurify"
}
}
Example: Vue
<div v-html="textWithPurifiedHtml"></div>
bnomei.htmlpurifier. | Default | Description |
---|---|---|
config | callback | overwrite this to adjust the config of used HtmlPurifier dependency |
This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please create a new issue.
It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.