スタイルタグを含むユーザー生成のHTMLページをきれいにするためにphp tidyを使用しています:
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
しかし、Tidy を実行すると、スタイル タグ データは CData に変換されます。私が Tidy を使用する主な目的は、ファイルを修復することと、適切なインデントを行うことです。
<style type="text/css">
/*<![CDATA[*/
body {
padding-top: 60px;
padding-bottom: 40px;
}
/*]]>*/
</style>
私のTidy設定オプションは -
$options = array(
'preserve-entities' => true,
'hide-comments' => true,
'tidy-mark' => false,
'indent' => true,
'indent-spaces' => 4,
'new-blocklevel-tags' => 'article,header,footer,section,nav',
'new-inline-tags' => 'video,audio,canvas,ruby,rt,rp',
'doctype' => 'omit',
'sort-attributes' => 'alpha',
'vertical-space' => false,
'output-xhtml' => true,
'wrap' => 180,
'wrap-attributes' => false,
'break-before-br' => false,
'vertical-space' => false,
);
$buffer = tidy_parse_string($buffer, $options, 'utf8');
tidy_clean_repair($buffer);
私はたくさん検索してみましたが、PHP Tidy ライブラリは正確に「十分に文書化された」ものではありません! そのため、Tidy がコードをクリーンアップ/修復した後、手動で CDATA を削除することになりました。
$buffer = str_replace("/*<![CDATA[*/","",$buffer);
$buffer = str_replace("/*]]>*/","",$buffer);
このアプローチに関する私の問題は、スタイルタグデータのインデントがまだ台無しになっていることです(ページの残りの部分と正確に整列していません)
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
繰り返しになりますが、TIDY がページに CDATA を作成しないようにするにはどうすればよいでしょうか。
どうもありがとう!