str_replace(或其他选项),用于替换php文档中的内容
我正在尝试为我正在制作的CMS创建一个模板文件,其中模板文件可以包含像str_replace(或其他选项),用于替换php文档中的内容,php,Php,我正在尝试为我正在制作的CMS创建一个模板文件,其中模板文件可以包含像{username}这样的变量,作为常规文本,当页面包含在index.php页面上时,这些文本将被替换 例如: 索引页: <?php include('templates/123/index.php'); ?> templates/123/index.php页面 <?php include('header.php'); ?> Welcome {username} <?php include(
{username}
这样的变量,作为常规文本,当页面包含在index.php页面上时,这些文本将被替换
例如:
索引页:
<?php include('templates/123/index.php'); ?>
templates/123/index.php页面
<?php include('header.php'); ?>
Welcome {username}
<?php include('footer.php'); ?>
欢迎{username}
我试过几种方法;但是,总是会遇到问题,因为我试图更改页面内容的页面包含PHP代码。我尝试的每一种方法要么1)因为打开和关闭文档中的PHP标记而出错,要么2)只是回显文档中的PHP代码。我还有什么办法可以做到这一点吗?甚至可以上一节课?我只是希望能够安全地实现这一点
我还将使用它来替换像{content1}get这样的定制变量,替换为一个php代码,该代码将被IonCube从数据库中检索列1中内容的数据,与{column2}{column3}和{column4}相同。我只是想让模板的创建变得非常简单。(因此,我希望代码也能做到这一点)我喜欢这样做的方法包括从以下内容开始编写代码:
ob_start(function($c) {
$replacements = array(
"username"=>"Kolink",
"rank"=>"Awesome"
);
return preg_replace_callback("/{(\w+)}/",function($m) use ($replacements) {
return isset($replacements[$m[1]]) ? $replacements[$m[1]] : $m[0];
},$c);
});
我建议采取两个步骤
我认为这将满足您的需要。您是否考虑过使用简单的模板语言?比如什么?我当然不介意查看smarty,我不知道它现在是否处于活动状态。我删除了我最后的评论,因为这确实有效。我打错了变量。现在我唯一的问题是,我如何使它工作,以使它取代1)文本(像现在一样)和2)行php代码(
“username”=>
),您不能这样做,因为这是在代码完成后运行的,就在将其发送到浏览器之前。但是,您可以将一个匿名函数作为替换项之一,然后添加一个检查以查看替换项是字符串还是可调用的,并相应地执行操作。我将如何执行此操作?如何将{loginplaceholder}替换为$loginplaceholder变量?您可以添加条目“loginplaceholder”=>$GLOBALS['loginplaceholder']
,尽管这并不推荐,因为$GLOBALS
可能很昂贵。或者,尝试在函数开头添加global$loginplaceholder
,然后使用“loginplaceholder”=>$loginplaceholder
。最后也是最好的选择,您可以从ob_start(函数($c)开始使用(&$loginplaceholder){
,然后将“loginplaceholder”=>$loginplaceholder
添加到数组中,而无需任何进一步的破解。太棒了!一切都成功了..谢谢…给您答案。感谢所有的帮助!