我正在寻找一种方法,将<?php echo $something; ?>
替换为{$something}
之类的其他符号。但是:没有使用聪明或类似的东西!
更详细:
目前,我得到了一个.php文件(里面有一些变量),其中包含文件“template.php”。在这个模板文件中,我不想使用(不是非常用户友好的)php表示法,而是替换此文件中的某些字符串,如上所述。有没有办法这样做?如果您可以使用<title></title>
替换<title><?php echo $title; ?></title>
之类的字符串,那么这可能是最好的。
也许(我的想法)我应该把整个代码写成一个php变量,然后做一些preg_replace并回显它?还是有一个更美丽的解决方案?
答案 0 :(得分:0)
您可以尝试一些符号。我更喜欢模板的一个就是:
<?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。最简单的方法是使用数组手动浏览文件并拉出占位符。但如果您拥有高流量和大量变量,这是一个缓慢的解决方案。
答案 1 :(得分:0)
几年前做过类似的事情,我不得不在电子邮件模板中替换几个变量。我最终实现的是在几个标签上执行str_replace
。像你一样,我不想拥有PHP符号或尽可能多地转义模板文件中的字符
示例:
的template.php
<html>
<head>
<title>[EMAIL_TITLE]</title>
</head>
<body>
Hello [USER_NAME],
Login here [LOGIN_LINK].
</body>
</html>
processor.php
$body = file_get_contents( 'template.php' );
str_replace( '[EMAIL_TITLE]', $emailTitle, $body );
str_replace( '[USER_NAME]', $userName, $body );
str_replace( '[LOGIN_LINK]', $userName, $body );
我已经改变了实现,但是使用了PHP短标签。使用前面的相同示例,您可以尝试:
的template.php
<html>
<head>
<title><?= $params['title']; ?></title>
</head>
<body>
Hello <?= $params['userName']; ?>!
</body>
</html>
processor.php
$params = array(
'title' => $siteTitle,
'userName' => $userName
);
ob_start();
require_once( 'template.php' );
$body = ob_end_clean();