PHP创建了一种更好的回送变量的方法
我正在寻找一种方法,用另一种符号代替PHP创建了一种更好的回送变量的方法,php,variables,replace,Php,Variables,Replace,我正在寻找一种方法,用另一种符号代替,比如{$something}。但是:没有使用smarty或类似的东西 更详细的信息: 目前,我得到了一个.php文件(其中包含一些变量),其中包括文件“template.php”。在这个模板文件中,我不想使用(不是非常友好的)php符号,而是像上面提到的那样替换这个文件中的某些字符串。有什么办法吗?如果可以用替换像这样的字符串,这可能是最好的 也许(我的想法)我应该把整个代码写进一个php变量,然后做一些预替换和回显?或者有更漂亮的解决方案吗?有一些符号可以
,比如{$something}
。但是:没有使用smarty或类似的东西
更详细的信息:
目前,我得到了一个.php文件(其中包含一些变量),其中包括文件“template.php”。在这个模板文件中,我不想使用(不是非常友好的)php符号,而是像上面提到的那样替换这个文件中的某些字符串。有什么办法吗?如果可以用
替换像
这样的字符串,这可能是最好的
也许(我的想法)我应该把整个代码写进一个php变量,然后做一些预替换和回显?或者有更漂亮的解决方案吗?有一些符号可以尝试。我更喜欢的模板是:
<?php
echo <<<HTML
<html>
<head>
<title>$title</title>
</head>
<body>
$body
</body>
</html>
HTML;
?>
然后在内容文件中,执行以下操作:
<?php
$title = 'My Page!';
$body = '<p>My Content!</p>';
include './template.php';
?>
有了这个,你不必逃避单引号和双引号,而且很容易在以后进行更改
您还可以像您所说的那样,将文件中的内容读入字符串并使用preg_replace。最简单的方法是使用数组手动遍历文件并拉出占位符。但是如果你有高流量和很多变量,这是一个缓慢的解决方案。几年前做了一件类似的事情,我不得不替换电子邮件模板中的几个变量。我最终实现的是在几个标记上执行
str\u replace
。和您一样,我也不希望在模板文件中使用PHP符号或转义字符
例如:
template.php
<html>
<head>
<title>[EMAIL_TITLE]</title>
</head>
<body>
Hello [USER_NAME],
Login here [LOGIN_LINK].
</body>
</html>
<html>
<head>
<title><?= $params['title']; ?></title>
</head>
<body>
Hello <?= $params['userName']; ?>!
</body>
</html>
不过,我已经更改了实现,以使用PHP短标记。使用前面相同的示例,您可以尝试:
template.php
<html>
<head>
<title>[EMAIL_TITLE]</title>
</head>
<body>
Hello [USER_NAME],
Login here [LOGIN_LINK].
</body>
</html>
<html>
<head>
<title><?= $params['title']; ?></title>
</head>
<body>
Hello <?= $params['userName']; ?>!
</body>
</html>
短标签<代码>。你是preg_替换,echo解决方案基本上是smarty/twig。就我个人而言,我一直不明白为什么php模板需要“用户友好”。短标记并没有真正的帮助-我想为所有新手和编码懒惰的人创建一个模板系统:)但是如果smarty使用类似的解决方案,应该没问题…smarty只是众多模板中的一个engines@MikeB:因为人们在php模板引擎中模板时想要模板。为什么只有一层模板,而只有两层的成本只有4倍?@Pi_isnt_42:PHP是一个模板引擎。一直如此。你只是在已经相当复杂的系统上增加了复杂性。好的,谢谢!事实上,我有4个变量,所以这应该不是问题:)我将尝试这两种解决方案(your和preg_replace),看看什么是最好的/最简单的。因为问题是“PHP创建一种更好的方法来回送变量”和对他问题的解释,这不是答案,因为他试图使用的是一种新的符号,那么就不是PHP,然后答案与模板引擎相关,但这不是答案,或者提问的用户必须重写他的answerFair评论,但我的基本问题是什么是输出模板变量的干净、高效的方法。我同意这甚至可能是乏味的。