【问题标题】:HTMLPurifier stripping out YouTubeHTMLPurifier 剥离 YouTube
【发布时间】:2016-08-11 05:03:04
【问题描述】:

我一直在尝试将 HTMLPurifier 配置为接受 YouTube 和 Vimeo 的 iframe 无济于事。许多与此相关的帖子似乎已经过时和/或根本不起作用。我能得到的最接近的是保留iframe,但src 已被剥离。

这是我目前所拥有的(iframe 在输出时被删除)。我意识到这个问题已经被问了无数次,但对我没有任何帮助。提前致谢!

更新

我还尝试了mewebstudio/Purifierhttps://github.com/mewebstudio/Purifier,它们甚至还有 YouTube 的默认配置设置。 iframe 仍然被剥离。我错过了什么?

// HTMLPurifier
    $config = \HTMLPurifier_Config::createDefault();

    $config->set('HTML.Doctype', 'HTML 4.01 Transitional');
    $config->set('AutoFormat.RemoveEmpty.Predicate', [
        'colgroup' =>
            [],
        'th' =>
            [],
        'td' =>
            [],
        'o:p' =>
            []
    ]);
    $config->set('AutoFormat.RemoveEmpty', true);
    $config->set('AutoFormat.RemoveEmpty.RemoveNbsp', true);
    $config->set('HTML.Allowed', 'p,span[style|class],a[href|title],abbr[title],acronym[title],b,strong,blockquote[cite],code,em,i,iframe[src|width|height],img[alt|title|class|src|height|width],h1,h2,h3,h3,ol,ul,li,table[class|style],tr,td,hr');
    $config->set('HTML.SafeIframe', true);
    $config->set('URI.SafeIframeRegexp', '%^(\/\/www\.youtube(?:-nocookie)?\.com\/embed\/|\/\/player\.vimeo\.com\/)%');

    $def = $config->getHTMLDefinition(true);
    $def->addAttribute('iframe', 'allowfullscreen', 'Bool');

    $purifier = new \HTMLPurifier($config);
    $input['body'] = $purifier->purify($input['body']);

【问题讨论】:

    标签: php iframe htmlpurifier


    【解决方案1】:

    我的原始代码存在两个问题。首先,正则表达式无效 - 它没有说明 http:。替换为'%^(https?:)?(\/\/www\.youtube(?:-nocookie)?\.com\/embed\/|\/\/player\.vimeo\.com\/)%'

    其次,$config->set('AutoFormat.RemoveEmpty', true); 似乎正在删除iframe(这是有道理的)。添加以下内容解决了这个问题:

    $config->set('AutoFormat.RemoveEmpty.Predicate', [
                'iframe' =>
                    array (
                        0 => 'src',
                    )
            ]);
    

    感谢 Edward Yang 在这方面的帮助!

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 2012-01-22
      • 2011-06-11
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2013-01-03
      相关资源
      最近更新 更多