PEAR HTML_Template_IT不会在PHP7中加载Templatefile

时间:2016-10-09 14:21:10

标签: pear php-7

我自己编写了一个CMS,它在PHP 5.6版之前工作正常。 现在,PHP7正在启动,我希望我的CMS为它做好准备。 在这个CMS中,我使用PEAR库,我已经升级到版本1.1o,因为这个版本支持PHP7。

现在我遇到了包HTML_Template_IT的问题:在尝试加载模板文件和之后的setCurrentBlock('元标记')时,我收到消息"找不到这个块"元标签'"

有谁在那里,谁有同样的问题,可以解决它? 非常感谢你的帮助!

这是我在index.php中的代码:

require_once('HTML/Template/ITX.php');
$tpl = new HTML_Template_ITX(TEMPLATE_DIR);

// Einlesen der Haupttemplate-Datei
$tpl->loadTemplatefile('main_tpl.html', true, true);

// Meta-Tags ausgeben
$tpl->setCurrentBlock('meta-tags');
$tpl->setVariable('author', AUTHOR);
$tpl->setVariable('description', DESCRIPTION);
$tpl->setVariable('keywords', KEYWORDS);
$tpl->setVariable('page_topic', PAGE_TOPIC);
$tpl->setVariable('publisher', PUBLISHER);
$tpl->setVariable('google_verify', GOOGLE_VERIFY);
$tpl->parseCurrentBlock();

这是我的模板-File main_tpl.html:

中的相应详细信息
<!-- BEGIN meta-tags -->
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="author" content="{author}" />
<meta name="Content-Language" content="de" />
<meta name="description" content="{description}" />
<meta name="keywords" content="{keywords}" />
<meta name="page-topic" content="{page_topic}" />
<meta name="publisher" content="{publisher}" />
<meta name="google-site-verification" content="{google_verify}" />
<meta name="rating" content="general" />
<meta name="revisit-after" content="10 days" />
<meta name="robots" content="index, follow" />
<!-- END meta-tags -->

浏览器中的输出:

Cannot find this block"meta-tags' 

1 个答案:

答案 0 :(得分:1)

让它在PHP 7上运行的主要问题是e中的preg_replace修饰符。您必须在1091中的IT.php附近替换它:

return preg_replace_callback(
    "#<!-- INCLUDE (.*) -->#im",
    function ($m) { $this->getFile($m[1]); },
    $content
);

我的机器上没有安装PEAR,但是现在我已经注释了require 'PEAR.php'。我还将构造函数更改为使用__construct来删除弃用警告,这些警告仍然有效,但将在PHP 8中删除。