我正在构建一个模板系统,该系统使用预先确定的字段(命名字段 1 - 10)和相应的表单来切换这些字段与用户表单数据。我一直在玩 preg_replace 和 str_replace 但不确定如何正确实现此功能,因为我以前从未使用过它。
本质上,系统的工作原理是首先上传一个“模板”,它是一串 html 格式,如下所示
'<div><h1>{field1}</h1><h2>{field1}</h2></div>'
在一个单独的函数中,我想用通过用户表单提交的字符串替换 '{field1}' 和 '{field2}' 值。
到目前为止,我正在提取数据,如下所示:
对于模板:
$html = Templates::where('id', '=', $templateId)->get('html');
对于表单数据:
$field1 = $request->input('field_1');
$field2 = $request->input('field_2');
然后我想做一些类似于下面的代码,但不确定语法。因为在我将每个字段从一到十手动编写为单独的函数之前,我没有使用过 preg_replace。
理想情况下,我希望能够循环遍历从 1 到 10 的每个字段,检查它们是否在 $html 中显示为 '{field#}' 如果模板中存在该字段,则替换为表单数据,如果不只是忽略它。为了节省为每个单独的字段重新编写代码。
当前更换尝试:
$htmlPrep = preg_replace('{field1}', $field1, $html);
$htmlPrep = preg_replace('{field2}', $field2, $html);
在函数中替换字符串的那些区域,而不是在视图中将它们渲染到位的原因是,fields1-10 和生成系统首先需要为多个模板工作,这些模板将有任意数量的字段限制为最多十个,其次包含组合数据结果的 $htmlPrep 变量不会被渲染,而是发送到带有一些 CSS 的 API 以生成和返回图像。
所以预期的结果(使用 'a' 和 'b' 作为用户输入表单值)将是一个名为 $htmlPrep 的新变量,其中包含:
'<div><h1>a</h1><h2>b</h2></div>'.
提前致谢。
扬帆大鱼
眼眸繁星