sde*_*ont 1 php tinymce htmlpurifier html5-video symfony
我在 Symfony2 应用程序中使用 TinyMCE 和 HTMLPurifier。
我需要使用 TinyMCE 嵌入网站的一些内部视频。问题是 HTML Purifier不接受 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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑 2018-04-16
调整代码以避免在最后一个HTML Purifier版本中删除“src” 。
更多选项:https : //github.com/kennberg/php-htmlpurfier-html5/blob/master/htmlpurifier_html5.php