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
问题是将所有不同的替换可能性硬编码到两个数组中。也许我可以找到另一个解决方案。
已在 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
问题是将所有不同的替换可能性硬编码到两个数组中。也许我可以找到另一个解决方案。