gpt4 book ai didi

php - 在 PHP 中制作一个简单的模板引擎

转载 作者:行者123 更新时间:2023-12-02 19:05:34 25 4
gpt4 key购买 nike

我需要编写一个简单的 PHP 函数,用它们各自的数据替换 {{ }} 字符之间的文本。

示例:

字符串:“甚至还有奇怪的万古 {{noun}} may {{verb}} "

$data = ['noun' => 'bird', 'verb' => 'fly'];

结果:

随着奇怪的永生,甚至也可能

我几乎可以使用基于 preg_replace_callback

的以下代码
function compile($str,$data){

foreach ($data as $k => $v) {
$pattern = '/\b(?<!\-)(' . $k . ')\b(?!-)/i';
$str = preg_replace_callback($pattern, function($m) use($v){
return $v;
}, $str);
}

return $str;
}

但我似乎无法解释 {{ }}

结果是这样的:

甚至 {{bird}} 都可能会{{fly}}

如何调整正则表达式和/或代码以解决双大括号?

此外,在有人问我为什么尝试手动执行此操作而不是使用 PHP 本身或 Smarty 之前插件——安装插件的用例太窄,我不能使用 PHP 本身,因为输入字符串是作为数据库中的原始文本输入的。我需要使用存储在 PHP 数组中的数据来编译原始文本。

最佳答案

因为无论如何你都要循环,所以保持简单:

foreach ($data as $k => $v) {
$str = str_ireplace('{{'.$k.'}}', $v, $str);
}

如果需要,您可以在 {{ 之前和 }} 之后添加一个空格。

关于php - 在 PHP 中制作一个简单的模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65097360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com