HTMLPurifier iFrame / regex问题

时间:2011-02-28 15:49:55

标签: php regex drupal htmlpurifier

我正在使用HTMLPurifier论坛上提供的代码来支持iFrame代码,因为Google,YouTube和其他人现在正在使用iframe而不是嵌入视频和地图。

以下是代码:

class HTMLPurifier_Filter_MyIframe extends HTMLPurifier_Filter
{
    public $name = 'MyIframe';

    public function preFilter($html, $config, $context) {
        return preg_replace("/iframe/", "img class=\"MyIframe\" ", $html);
    }

    public function postFilter($html, $config, $context) {
       $post_regex = '#<img class="MyIframe" ([^>]+)>#';
       return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html);
    }

    protected function postFilterCallback($matches) {
        return '<iframe '.$matches[1].'></iframe>';
    }
}

它几乎可以工作,除了一个问题,这就是结果:

<iframe height="275" src="omitted"></iframe> "class="MyIframe" >"

如何让课程成为iframe代码的一部分?

更新:抱歉,发帖后看到匹配的问题。初始搜索没有显示任何内容。以下是preFilter函数中必须更改的内容:

return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));

1 个答案:

答案 0 :(得分:0)

将preFilter正则表达式更改为:

return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));