すべてのPHPファイルおよび/またはHTMLファイル出力をブラウザに表示する前に「フィルタリング」する方法はありますか?私はそれが表示される前にグローバル関数を渡すことができると思ったが、私は実装に固執している。助けてください。すべてのPHPファイル出力が表示される前に「フィルタファイル」を通過させる
同じ結果を得るためのより良い方法がある場合は、私は知ってうれしいです。
ありがとうございました。
すべてのPHPファイルおよび/またはHTMLファイル出力をブラウザに表示する前に「フィルタリング」する方法はありますか?私はそれが表示される前にグローバル関数を渡すことができると思ったが、私は実装に固執している。助けてください。すべてのPHPファイル出力が表示される前に「フィルタファイル」を通過させる
同じ結果を得るためのより良い方法がある場合は、私は知ってうれしいです。
ありがとうございました。
ob_startをチェックすると、スクリプト出力の後処理にコールバックハンドラを渡すことができます。
<?php
ob_start("ob_gzhandler");
?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>
ここでは、tidy extensionとあなたのHTMLを整理する方法を説明する充実した例です:
function tidyhtml($input)
{
$config = array(
'indent' => true,
'output-xhtml' => true,
'wrap' => 200);
$tidy = new tidy;
$tidy->parseString($input, $config, 'utf8');
$tidy->cleanRepair();
// Output
return $tidy;
}
ob_start("tidyhtml");
//now output your ugly HTML
例えば、PHPは組み込みのコールバックob_gzhandler使用するための出力を圧縮するにはが含まれて
すべてのPHPスクリプトが同じフィルターを直接使用することなく使用されていることを確認したい場合は、auto_prepend_file設定ディレクティブを参照してください。
Smartyをご覧ください。これは、PHPのテンプレートシステムです。これは、使用するのがよい方法であり、グローバル出力フィルタをプラグインすることができます。
編集:Paulの返信が良いです。 output bufferingで達成することができる
:だから、
ob_start("my_filter_function");
私のオリジナルの返事だっただろう。例えば
:
ob_start();
// Generate all output
echo "all my output comes here."
// Done, filtering now
$contents = ob_get_contents();
ob_end_clean();
echo my_filter_function($contents);
あなたは、出力バッファリングを使用して、あなたが提供することができます
ことをやって PHP's output buffering機能を使用することができますob_start()
<?php
function filterOutput($str) {
return strtoupper($str);
}
ob_start('filterOutput');
?>
<html>
some stuff
<?php echo 'hello'; ?>
</html>
を呼び出すときにコールバックを指定することができますバッファがフラッシュされるときに呼び出されるコールバックメソッド:
<?php
function callback($buffer) {
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>
この場合、出力はスクリプトから送信されず、フラッシュの直前にコールバックメソッドが呼び出される直前にバッファされます。
+1良い答えのために、私はきちんとしたクラスを知らなかった。それはネイティブクラスですか? –
いいえ、拡張機能です。 PECL経由でインストールします。 apt-getは典型的なDebian/Ubuntuボックスにphp5-tidyをインストールします。 –
非常に良い答え、私はそれを私のウェブサイトに追加する必要があります – T0xicCode