Twig:如何从PHP中删除外部字符串中的twig标签?

时间:2017-09-22 15:40:30

标签: php symfony twig escaping

不要问我为什么,但是我从外部源获取了解释的字符串,我想剥离或逃避所有可能的树枝标记(外部用户不应该被允许使用树枝)。

示例:

<h1>{{ pageTitle }}</h1>

<div class="row">
    {% for product in products %}
    <span class="mep"></span>
    {% endfor %}
</div>

期望的结果:

<h1></h1>

<div class="row">
<span class="mep"></span>
</div>

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用{{ '{{' }}{{ '}}' }}{{ '{%' }}{{ '%}' }}来转义Twig标记(如here所述)。

$input = '<h1>{{ pageTitle }}</h1>

<div class="row">
    {% for product in products %}
    <span class="mep"></span>
    {% endfor %}
</div>';

$search = "/({{|}}|{%|%})/";

$replace = "{{ '$1' }}";

echo preg_replace($search, $replace, $input);

答案 1 :(得分:0)

我的正则表达式解决方案(更好的解决方案仍然受欢迎):

$input = '<h1>{{ pageTitle }}</h1>

<div class="row">
    {% for product in products %}
    <span class="mep"></span>
    {% endfor %}
</div>';

$search = '/({{.+}})|({%.+%})/si';

$replace = '';

echo preg_replace($input, $search, $replace);