PHPバッファリング関数でValidな(X)HTMLにしてやる
Category : PHP
ちょっと姑息なやり方なような気もするが・・・・・
PHPの出力バッファリング関数で(X)HTMLをValidなものに近づけようと試みてみた。その前に「no Valid」な部分はValidな記述に修正しておく、というのは言うまでもない。
で、肝心のやり方ですが、HTMLコードやテンプレートなどに、以下のようにコードを挿入しておく。
PHPの出力バッファリング関数で(X)HTMLをValidなものに近づけようと試みてみた。その前に「no Valid」な部分はValidな記述に修正しておく、というのは言うまでもない。
で、肝心のやり方ですが、HTMLコードやテンプレートなどに、以下のようにコードを挿入しておく。
<?php
function callback($buffer)
{
$buffer = ereg_replace("&", "&", $buffer);//*1
$buffer = ereg_replace("IMG", "img", $buffer);//*2
$buffer = preg_replace("!<img(.*?)\">!", "<img\\1\" />",$buffer);//*3
return $buffer;
}
ob_start("callback");
?>
(もともとのHTML部分)
<?php
ob_end_flush();
?>- *1の部分は、URLのパラメータ等でよく使いますが、それが実体参照文字の関係でnot Validとなります。なので、「&」を「$#38;」に変換してます。
- *2の部分の「IMG」は、画像を表示するときに使うタグですが、小文字じゃないとダメ!と怒られるので、小文字に変換してます。
- *3の部分は画像表示のタグの最後が「/」スラッシュで終わっていないと行けないので、それを追加しています。
(ただし。。上記の正規表現でうまくいかない場合があります。。。)
他にも正規表現さえ追加していけば、いろいろ変換できます。
やり方がコソクですか??(^^;)

コメント
実体参照文字で&を使ってたら?
Posted by (ai) at 2008年10月22日 12:05
>(ai)さん
そうですよね(^^;)
それは考えてました。。。
やはり&は正規表現でやった方が良さそうですね。
Posted by showBOO at 2008年10月22日 12:42
コメントする