今回管理画面から設定するメッセージにHTMLを使用できるようにしました。
携帯サイトがあるので文字コードは SJIS です。
管理画面からの入力なので、比較的セキュリティは緩くてもいいかなと思ったのですが、何買ったら心配なので HTML Purifier にて、ヤバいタグや属性を除去するように。
$config = HTMLPurifier_Config::createDefault(); $config->set( 'Core.Encoding', 'SJIS' ); $config->set( 'Core.Language', 'ja' ); $config->set( 'HTML.AllowedElements', $g_aryHTMLPurifierAllowTag ); $objPurifier = new HTMLPurifier( $config ); $str = $objPurifier->purify( $str );
ここで困ったのが © や ® などの HTML 特殊文字です。
フォームからはちゃんと © や ® という形で送られてくるのですが HTML Purifier を通すと消えてなくなっている・・・
で調べてみると、HTML Purifier は、© や ® を © や ® に変換してしまうことが判明、また、set( 'Core.Encoding', 'SJIS' ); していると SJIS に変換できない文字は消してしまうようです。
とりあえず、© ® を別のキーワード(全角が安全?)に変換してから purify() してその後に戻してやるというヤクザな方法で逃げました^^;