【问题标题】:Define variable instead of php echo to implement template tags feature定义变量而不是 php echo 来实现模板标签功能
【发布时间】:2015-05-08 08:26:30
【问题描述】:

我正在编写一个带有模板添加功能的项目。 并且想在模板中有简单的变量,这就是为什么 我想定义一些变量或类似的东西,而不是使用:

<?php echo $variable; ?>

我想要一些类似的东西:

{$varaible}

我该怎么做? 实际上如何创建我的简单模板引擎? 谢谢。

【问题讨论】:

  • 你应该检查一些模板引擎。
  • 首先学习如何使用现有的模板引擎。如果您想重新发明轮子,请研究它们如何在内部工作。试试twig.sensiolabs.org
  • 玩 preg_replace_callback 它非常适合这项工作,并且可以提供比简单的查找数组更多的逻辑。

标签: php string variables echo


【解决方案1】:

您可以使用任何现有的模板引擎或通过以下代码集来完成。

如下所示创建一个模板文件(调整 HTML,添加更多模板变量或任何东西)。将其保存到文件中并命名为 mytemplate.txt

<html>
<head>
<title>{title}</title>
</head>
<body>
<h1>{header}</h1>
{text}
</body>
</html>

创建一个 PHP 文件,并将其命名为 home.php(或任何名称,取决于您的用例)。添加以下代码。

<?php 
$tags['title']="Replaces title tag";
$tags['header']="Replaces header tag";
$tags['text']="Replaces text tag"; 

//lets us open your template file and replace the tags
print preg_replace("/\{([^\{]{1,100}?)\}/e","$tags[$1]",file_get_contents("mytemplate.txt"));
?>

确保 mytemplate.txt 和 home.php 在您服务器上的同一目录中。

注意:- 这为您提供了一个基本的模板引擎,使用 PHP 的 preg_replace 函数。

这里是参考

  1. https://www.webmasterworld.com/php/3444822.htm
  2. http://php.net/manual/en/function.preg-replace.php

【讨论】:

    【解决方案2】:

    首先,你必须定义你的变量

    接下来你将不得不使用这个 PHP 函数来做你的替换 str_replace http://php.net/str_replace

    // Provides: You should eat pizza, beer, and ice cream every day
    $phrase  = "You should eat fruits, vegetables, and fiber every day.";
    $healthy = array("fruits", "vegetables", "fiber");
    $yummy   = array("pizza", "beer", "ice cream");
    
    $newphrase = str_replace($healthy, $yummy, $phrase);
    

    将相同的内容应用到您的模板中,它就可以正常工作了。

    【讨论】:

    • 你为什么要标记我?你有没有在降价之前测试过?有很多方法可以处理许多解决方案,因此请务必在标记之前进行测试,并且不要总是期望所有答案都准确地提供给您,而无需您做任何进一步的小工作。看看这个来自 PHP.net mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &amp;$count ] ) 你明白吗?如果你这样做了,你就会知道它甚至可以用于你的时事通讯模板。阅读更多
    • @mehdi 如果您不想使用preg_replace,只需使用str_replace,它就会满足您的需求。它可以简单地举出更多的例子来告诉你你想要做什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2019-03-08
    • 2021-09-06
    相关资源
    最近更新 更多