smarty 处理超过 php 的强(文本)格式 -> 仅输出修改后的 php

smarty processes strong (text) format over php -> put out modified php only

已在 classes 文件中准备了一个带有 php 的字符串修改。现在在 smarty 模板 (tpl) 文件中输出字符串时我得到了错误的文本格式。该项目使用 smarty 3.1-DEV 和 php 5.6.

我有这个 php 代码并在 php class 文件中分配了变量:

    $pattern = '/' . implode('|', $allergens_searchnames) . '/iu';
    echo preg_replace_callback($pattern, function ($m) { 
    return mb_strtoupper($m[0]); }, $prodIngredients);
    }
    $this->assign("articleIngredients", $prodIngredients);

直接使用 "echo" 在 classes 文件上输出我在前端获得所需的格式: “祖塔腾: MARILLEn (75%), Zucker, Zitronensaft, Geliermittel: PEKTINe (aus Apfel)

对 smarty 输出的实现是错误的: “祖塔腾: Marillen (75%), Zucker, Zitronensaft, Geliermittel: Pektine (aus Apfel)

这里就像我对 tpl 文件的实现:

<span class="pull-right">
{if isset($articleIngredients)}
<p>{$articleIngredients|unescape:'html'}</p>
{/if}   
</span>

由于我对这个项目和 smarty 了解不多,所以几乎不可能为我解决这个问题。感谢任何帮助。

我认为这 2 个之一可能对您有所帮助。尝试使用 unescape:'htmlall' 或尝试将文本打印为文字文本

<span class="pull-right">
{if isset($articleIngredients)}
<p>{$articleIngredients}|unescape:'htmlall'}</p>
{/if}  

来源:https://www.smarty.net/docs/en/language.modifier.unescape.tpl

{literal}{/literal} 标签中的任何内容都不会被解释,而是按原样显示。

<span class="pull-right">
{if isset($articleIngredients)}
<p>{literal}{$articleIngredients}{/literal}</p>
{/if}   
</span>

来源:https://www.smarty.net/docs/en/language.function.literal.tpl

我找到了直接在模板上实现的解决方案:smarty replace multiple values

问题是将所有不同的替换可能性硬编码到两个数组中。也许我可以找到另一个解决方案。