0

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>';
    }
}

1 つの問題を除いて、ほとんど機能します。これが結果です。

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

クラスを iframe タグの一部にするにはどうすればよいですか?

更新: 申し訳ありませんが、投稿後に一致する質問を見ました..最初の検索では何も見つかりませんでした。preFilter 関数で変更する必要があったのは次のとおりです。

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

1 に答える 1

0

preFilter 正規表現を次のように変更します。

return preg_replace("/iframe/", "img class=\"MyIframe\" ", preg_replace("/<\/iframe>/", "", $html));
于 2011-02-28T15:59:55.977 に答える