HTML Purifier 删除 TinyMCE HTML 5 视频标签

HTML Purifier remove TinyMCE HTML 5 video tag

我在 Symfony2 应用程序中使用 TinyMCE 和 HTMLPurifier。

我需要使用 TinyMCE 嵌入网站的一些内部视频。问题是 HTML 净化器 不接受 HTML5 视频标签 并将其删除。

有人可以告诉我如何配置 TinyMCE/HTMLPurifier 以允许嵌入视频吗?

https://github.com/Exercise/HTMLPurifierBundle开始,我稍微添加了转换器以接受视频标签。

在此处查找完整的 HTML5 配置:https://github.com/kennberg/php-htmlpurfier-html5

<?php

namespace Exercise\HTMLPurifierBundle\Form;

use Symfony\Component\Form\DataTransformerInterface;

class HTMLPurifierTransformer implements DataTransformerInterface
{
    private $purifier;

    /**
     * Constructor.
     *
     * @param \HTMLPurifier $purifier
     */
    public function __construct()
    {
          //Find full HTML5 config : https://github.com/kennberg/php-htmlpurfier-html5
          $config = \HTMLPurifier_Config::createDefault();
          $config->set('HTML.Doctype', 'HTML 4.01 Transitional');

          // Set some HTML5 properties
          $config->set('HTML.DefinitionID', 'html5-definitions'); // unqiue id
          $config->set('HTML.DefinitionRev', 1);
          if ($def = $config->maybeGetRawHTMLDefinition()) {
            // http://developers.whatwg.org/the-video-element.html#the-video-element
            $def->addElement('video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', array(
              'src' => 'URI',
              'type' => 'Text',
              'width' => 'Length',
              'height' => 'Length',
              'poster' => 'URI',
              'preload' => 'Enum#auto,metadata,none',
              'controls' => 'Bool',
            ));
            $def->addElement('source', 'Block', 'Flow', 'Common', array(
              'src' => 'URI',
              'type' => 'Text',
            ));
          }
          $this->purifier = new \HTMLPurifier($config);
    }

    /**
     * @see Symfony\Component\Form\DataTransformerInterface::transform()
     */
    public function transform($value)
    {
        return $value;
    }

    /**
     * @see Symfony\Component\Form\DataTransformerInterface::reverseTransform()
     */
    public function reverseTransform($value)
    {
        return $this->purifier->purify($value);
    }
}

编辑 2018-04-16

调整代码以避免 "src" 删除最新的 HTML Purifier 版本。

更多选项:https://github.com/kennberg/php-htmlpurfier-html5/blob/master/htmlpurifier_html5.php