0

HTMLPurifierの設定に問題があります。

私の場合、浄化しようとしているHTMLにはimgタグが含まれています。これを可能にするために、私は追加しました:

$ config-> set('HTML.Allowed'、'p [align | style]、strong、a [href | title | mailto]、em、table [class | width | cellpadding]、td、tr、h3、h4、 h5、hr、br、u、ul、ol、li、img [src | width | height | alt | class]、span [class]、strike、sup、sub');

私の設定に。

しかし、問題は、私の画像のsrc値がそれぞれ%% abc %% %%xyz%%で始まることと終わることです。コードの後半でこれらの文字列を使用して、画像のURLを識別し、いくつかの処理を行います。

しかし、HTMLPurifierはこれらのタイプのURLを許可していません。

カスタムURIスキーマを追加しようとしましたが、機能させることができません。どんな助けでも大歓迎です。

4

2 に答える 2

0

うーん...ええ、カスタム値を正規表現してその場所に一意の識別子を残し、最後にそれらを元に戻さない限り、おそらく運が悪いでしょう。パーセント記号は、通常URLで異なる意味を持つため、特に悪いです。

于 2012-07-11T01:31:12.970 に答える
0

次のように、属性の定義/検証を上書きできるはずです。

class ParameterURIDef extends \HTMLPurifier_AttrDef_URI
{
    public function validate($uri, $config, $context)
    {
        if(preg_match('/^\{[a-zA-Z0-9]+\}$/', $uri)) {
            return true;
        }

        return parent::validate($uri, $config, $context);
    }
}
 $config = HTMLPurifier_Config::createDefault();
 $def =   $config->getHTMLDefinition(true);
 $def->addAttribute('img', 'src', new ParameterURIDef());
于 2020-08-22T17:49:54.073 に答える