我自己编写了一个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'
答案 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中删除。