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
我在 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