在PHP文件中替换{{string}} [英] Replacing {{string}} within php file

查看:83
本文介绍了在PHP文件中替换{{string}}的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个类方法中包含一个文件,并且该文件中包含html + php代码.我在该代码中返回一个字符串.我明确编写了{{newsletter}},然后在我的方法中执行了以下操作:

I'm including a file in one of my class methods, and in that file has html + php code. I return a string in that code. I explicitly wrote {{newsletter}} and then in my method I did the following:

$contactStr = include 'templates/contact.php';
$contactStr = str_replace("{{newsletter}}",$newsletterStr,$contactStr);

但是,它不会替换字符串.我这样做的唯一原因是,当我尝试将变量传递给包含的文件时,它似乎无法识别它.

However, it's not replacing the string. The only reason I'm doing this is because when I try to pass the variable to the included file it doesn't seem to recognize it.

$newsletterStr = 'some value';
$contactStr = include 'templates/contact.php';

那么,如何实现字符串替换方法?

So, how do I implement the string replacement method?

推荐答案

您可以将PHP用作模板引擎.不需要{{newsletter}}构造.

You can use PHP as template engine. No need for {{newsletter}} constructs.

假设您在模板文件中输出变量$newsletter.

Say you output a variable $newsletter in your template file.

// templates/contact.php

<?php echo $newsletter; ?>

要替换变量,请执行以下操作:

To replace the variables do the following:

$newsletter = 'Your content to replace';

ob_start();        
include('templates/contact.php');
$contactStr = ob_get_clean();

echo $contactStr;

// $newsletter should be replaces by `Your content to replace`

通过这种方式,您可以构建自己的模板引擎.

In this way you can build your own template engine.

class Template
{
    protected $_file;
    protected $_data = array();

    public function __construct($file = null)
    {
        $this->_file = $file;
    }

    public function set($key, $value)
    {
        $this->_data[$key] = $value;
        return $this;
    }

    public function render()
    {
        extract($this->_data);
        ob_start();
        include($this->_file);
        return ob_get_clean();
    }
}

// use it
$template = new Template('templates/contact.php');
$template->set('newsletter', 'Your content to replace');
echo $template->render();

关于它的最好的事情:您可以立即在模板中使用条件语句和循环(完整的PHP).

The best thing about it: You can use conditional statements and loops (full PHP) in your template right away.

这篇关于在PHP文件中替换{{string}}的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆