我正在使用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
目录中的.htaccess
,将此脚本添加到每个HTML
文件中:
AddType application/x-httpd-php .html
php_value auto_prepend_file "prepend.inc"
由于我的应用程序的体系结构,我需要在HTML
中回显PHP
文件。
但事实证明这是一项比预期更重要的任务,因为我在将文件转换为PHP
字符串时所做的任何尝试以及回显导致上述ob_callback
未执行...(通过我知道prepend.inc
已运行)
我尝试过fread
,file_get_content
甚至:
const CONSTANT = 'oranges';
ob_start();
require 'theHTMLfile.html';
$out = ob_get_contents();
ob_end_clean();
echo $out;
这些似乎都没有达到prepend.inc中的ob_start回调,并且已经替换了模式...
一种解决方案是使用完整的URL(require 'http://www.example.com/theHTMLfile.html';
),但我不能使用它,因为它会破坏对全局变量的引用,我需要为HTML
等获取数据。 />
任何建议都将不胜感激!