HTMLPurifier 从 YouTube 视频中删除 Allowfullscreen
HTMLPurifier Removing Allowfullscreen From YouTube Videos
出于某种原因,HTMLPurifier 似乎正在从 iframe 中删除 allowfullscreen 元素,我不确定为什么,我已经做了一些研究,但它似乎无法找到不是几年前的答案。以下是我启动净化器的方式。
require 'htmlpurify/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.TargetBlank', 'true');
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%');
$config->set('HTML.DefinitionID', 'usertag');
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
$def->addElement('user', 'Block', 'Flow', 'Common', array('name' => 'ID'));
}
$purifier = new HTMLPurifier($config);
我正在净化这个 <iframe title="YouTube Player" src="https://www.youtube.com/embed/J---aiyznGQ" width="560" height="315" frameborder="0" allowfullscreen></iframe>
但它只是删除了 allowfullscreen 元素。
我的正则表达式错了吗?有没有我不应该添加的东西,或者我遗漏的东西?
"allowfullscreen" 不是 an attribute HTML Purifier inherently recognises for IFrames, which means that if you want to support it, you will need to customise 您的 HTML 净化器模块。应该这样做(此代码未经过测试,但应该让您走上正确的道路):
$config = HTMLPurifier_Config::createDefault();
// ...
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('iframe', 'allowfullscreen', 'Bool');
看看对你有没有帮助?如果您发现自己卡住了(但请注意,如果您使用 HTML.AllowedElements
和 HTML.AllowedAttributes
配置,这些是完整的白名单 - 如果您使用那些仅列入白名单的指令 iframe
,任何其他 HTML 标签都将被删除)。
出于某种原因,HTMLPurifier 似乎正在从 iframe 中删除 allowfullscreen 元素,我不确定为什么,我已经做了一些研究,但它似乎无法找到不是几年前的答案。以下是我启动净化器的方式。
require 'htmlpurify/library/HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.TargetBlank', 'true');
$config->set('HTML.SafeIframe', true);
$config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%');
$config->set('HTML.DefinitionID', 'usertag');
$config->set('HTML.DefinitionRev', 1);
if ($def = $config->maybeGetRawHTMLDefinition()) {
$def->addElement('user', 'Block', 'Flow', 'Common', array('name' => 'ID'));
}
$purifier = new HTMLPurifier($config);
我正在净化这个 <iframe title="YouTube Player" src="https://www.youtube.com/embed/J---aiyznGQ" width="560" height="315" frameborder="0" allowfullscreen></iframe>
但它只是删除了 allowfullscreen 元素。
我的正则表达式错了吗?有没有我不应该添加的东西,或者我遗漏的东西?
"allowfullscreen" 不是 an attribute HTML Purifier inherently recognises for IFrames, which means that if you want to support it, you will need to customise 您的 HTML 净化器模块。应该这样做(此代码未经过测试,但应该让您走上正确的道路):
$config = HTMLPurifier_Config::createDefault();
// ...
$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // remove this later!
$def = $config->getHTMLDefinition(true);
$def->addAttribute('iframe', 'allowfullscreen', 'Bool');
看看对你有没有帮助?如果您发现自己卡住了(但请注意,如果您使用 HTML.AllowedElements
和 HTML.AllowedAttributes
配置,这些是完整的白名单 - 如果您使用那些仅列入白名单的指令 iframe
,任何其他 HTML 标签都将被删除)。