2012-05-09 23 views
1

HTMLPurifierをタグの属性をフィルタリングしないで、今まで成功していないと私は狂ってしまいました。HTMLPurifierは属性を許可します

$config = HTMLPurifier_Config::createDefault(); 
    $config->set('Core.Encoding', 'UTF-8'); 
    $config->set('Core.CollectErrors', true); 
    $config->set('HTML.TidyLevel', 'medium'); 
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); 
    $config->set('URI.DisableExternalResources', false); 

    $config->set('HTML.Allowed', 'table[border|width|style],tbody,tr,td,th,img[style|src|alt],span[style],p[style],ul,ol,li,strong,em,sup,sub'); 

    $PHTML = new HTMLPurifier($config); 
    echo htmlspecialchars($PHTML->purify($html)); 

    // The input string: 
    "Some <span style="text-decoration: underline;">cool text</span> <img src="http://someurl.com/images/logo.png" alt="" />. 

    // The output string: 
    "Some <span>cool text</span> <img src="%5C" alt="" />. 

私はHTML.Allowedオプションで定義されている指定された要素の指定した属性を許可したいです。

答えて

1

マジック引用符をオフにします。後半の提案の

+0

私はそれを試してみましたが、現在出力中です:Some クールテキスト kanevbgbe

+0

まだ魔法の引用符が私にあるように見えます... –

1

ビットを(%の5C注)が、私はHTMLPurifierがは、それらが設定をHTML.Allowedで設定されていても属性スタイルをストリッピングして、同様の問題に遭遇しました。

私が見つけた解決策はあなたにも見えますCSS.AllowedPropertiesを設定する必要があり、このようなビット:

$config->set('CSS.AllowedProperties', 'text-align,text-decoration,width,height'); 

使用この組み合わせでHTML.Allowedと:私は願っています

$config->set('HTML.Allowed', 'img[src|alt|style],span[style]'); 

他の誰かがこれが役に立ちます。you can read more about CSS.AllowedProperties here