我正在开发小模板类。我需要帮助转换模板文件中编写的{$ variable}以转换为
喜欢:
<html>
<body>
<p> Hey Welcome {$username} </p>
</body>
</html>
转换为
<html>
<body>
<p> Hey Welcome <?php echo $username ?> </p>
</body>
</html>
就像变量用户名一样。可以有任何长度的变量。我只想将其转换为php echo statment。
我认为有可能使用preg_replace()但不知道如何。
答案 0 :(得分:1)
这是怎么回事?
$string = 'Hello {$username}, how are you?';
$new_string = preg_replace('/\{(\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/', '<?php echo \\1; ?>', $string);
echo $new_string;
这给出了这个:
Hello <?php echo $username; ?>, how are you?
我从php手册中借用了这个表达式。
变量名遵循与PHP中其他标签相同的规则。一个有效的 变量名以字母或下划线开头,后跟任意名称 字母,数字或下划线的数量。作为正则表达式, 它将被表达为:' [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * '
因此理论上它应匹配任何有效变量。
答案 1 :(得分:0)
preg_replace('/\{\$username\}/', '<?php echo $username; ?>', $text);
或一般情况下:
preg_replace('/\{\$([^\}]+)\}/', '<?php echo $$1; ?>', $text);
答案 2 :(得分:0)
例如: 你有app文件夹结构:
其中“app”文件夹是webroot
因此,文件“app / view / index.template”包含:
<html>
<body>
<p> Hey Welcome {$username} </p>
</body>
</html>
“app / controller / index.php”包含下一个:
<?php
$username = 'My Hero';
$content = file_get_contents(__DIR__ . '../view/index.template');
if ($content) {
echo str_replace('{$username}', $username, $content);
} else { echo 'Sorry, file not found...';}
“app / index.php”包含下一个:
<?php
include __DIR__ . '/controller/index.php';
像这样......