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-htmlpurifieror git submodule add https://github.com/bnomei/kirby3-htmlpurifier.git site/plugins/kirby3-htmlpurifierorcomposer 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.