This library provides HTML5 element definitions for HTML Purifier.
It is the most complete HTML5-compliant solution among all based on HTML Purifier. Apart from providing the most extensive set of element definitions, it provides tidy/sanitization rules for transforming the input into a valid HTML5 output.
Install with Composer by running the following command:
composer require xemlock/htmlpurifier-html5
The most basic usage is similar to the original HTML Purifier. Create a HTML5-compatible config
using HTMLPurifier_HTML5Config::createDefault()
factory method, and then pass it to an HTMLPurifier
instance:
$config = HTMLPurifier_HTML5Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html5 = $purifier->purify($dirty_html5);
To modify the config you can either instantiate the config with a configuration array passed to
HTMLPurifier_HTML5Config::create()
, or by calling set
method on an already existing config instance.
For example, to allow IFRAME
s with Youtube videos you can do the following:
$config = HTMLPurifier_HTML5Config::create(array(
'HTML.SafeIframe' => true,
'URI.SafeIframeRegexp' => '%^//www\.youtube\.com/embed/%',
));
or equivalently:
$config = HTMLPurifier_HTML5Config::createDefault();
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^//www\.youtube\.com/embed/%');
Apart from HTML Purifier's built-in configuration directives, the following new directives are also supported:
-
HTML.IframeAllowFullscreen
Version added: 0.1.11
Type: Boolean
Default:false
Whether or not to permit
allowfullscreen
attribute oniframe
tags. It requires either %HTML.SafeIframe or %HTML.Trusted to betrue
.
Aside from HTML elements supported originally by HTML Purifier, this library adds support for the following HTML5 elements:
<article>
, <aside>
, <audio>
, <bdi>
, <details>
, <dialog>
, <figcaption>
, <figure>
, <footer>
, <header>
, <hgroup>
, <main>
, <mark>
, <nav>
, <picture>
, <progress>
, <section>
, <source>
, <summary>
, <time>
, <track>
, <video>
, <wbr>
as well as HTML5 attributes added to existing HTML elements, such as:
<a>
, <del>
, <fieldset>
, <ins>
, <script>
The MIT License (MIT). See the LICENSE file.