1


HTMLのデータベース情報を使用 して人口統計に取り組んでいますPHP。ファイルにはHTMLパターン ({{$pattern}}) があり、HTMLファイル内にある場合、一致するPHP変数に置き換えられます。HTMLファイルの例は次のとおりです。

<div>{{$apples}}</div>

必要に応じてこのHTMLファイルに入力するために、次のPHPスクリプトを作成しました ( prepend.inc):

function ob_callback($buffer){

    global $data;
    $data['apples'] = CONSTANT; //global definition defined elsewhere

    $buffer = preg_replace_callback(
          '/{{\$([a-zA-Z0-9_]+)}}/',
          function($matches){
                 global $data;
             return (isset($data[$matches[1]])?$data[$matches[1]]:"");
          },
          $buffer);
    return $buffer;
}
ob_start("ob_callback");

このスクリプトは、ディレクトリ内のHTMLに次を追加することにより、すべてのファイルの先頭に追加されます。.htaccessHTML

AddType application/x-httpd-php .html
php_value auto_prepend_file "prepend.inc"

私のアプリケーションのアーキテクチャのため、 にHTMLエコーされたファイルが必要ですPHP。ただし、ファイルを文字列に変換してエコーを実行しようとすると、上記が実行されない

ため、これは予想よりも大きなタスクであることが証明されています...(実行されていることはわかっています) 私は試しました:PHPob_callbackprepend.inc

freadfile_get_content

const CONSTANT = 'oranges';
ob_start();
require 'theHTMLfile.html';
$out = ob_get_contents();
ob_end_clean();
echo $out;

ただし、これらのいずれも prepend.inc の ob_start コールバックに到達していないようで、パターンが置き換えられています...
1 つの解決策は完全な URL ( require 'http://www.example.com/theHTMLfile.html';) を使用することですが、global への参照が壊れてしまうため使用できません。などのデータを取得するために必要な変数HTML

どんな提案でも大歓迎です!

4

0 に答える 0