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

Have prepared a string modification with php in the classes file. Now in the smarty template (tpl) file when outputting the string I get a wrong text format. The project uses smarty 3.1-DEV and php 5.6.

I have this php code and assigned the variable in php class file:

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

Outputting directly with "echo" over classes file I get on front end the desired format: "Zutaten: MARILLEn (75%), Zucker, Zitronensaft, Geliermittel: PEKTINe (aus Apfel)"

Implementation over smarty output is wrong: "Zutaten: Marillen (75%), Zucker, Zitronensaft, Geliermittel: Pektine (aus Apfel)"

Here like I implemented to the tpl-file:

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

Due to the fact that I don't know much of the project and of smarty it is nearly impossible to fix this for me. Any help is appreciated.

Answer

Solution:

I think one of these 2 might help you. Try using unescape:'htmlall' or Try printing the text as literal text

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

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

Anything within {literal}{/literal} tags is not interpreted, but displayed as-is.

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

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

Answer

Solution:

I found a solution to implement it directly on the template: smarty replace multiple values

problem is to hardcode all diffrent possibilities to replace into two arrays. Maybe I can find another solution for this.

Source