我正在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
等获取数据。
我们欢迎所有的建议!