Twig之间呈现的不可见字符包括

时间:2014-03-17 00:01:40

标签: html symfony twig byte-order-mark

我的Twig include有一个奇怪的问题,即在我的HTML上呈现一些不可见的字符。我尝试用千种方式搜索它,但找不到有类似问题的人。事实上,我甚至不确定它是否与Twig或Symfony相关或者是什么,所以我不确定我需要寻找什么。我试试m

在我的一个视图的两个不同点上,我使用for循环通过li每个include渲染一个单独的twig文件,每次都有一组不同的参数。这两个循环是:

<ul class="search-results">
    {% for entity in entities %}
        {% include 'SomeBundle:Users:renderUserResults.html.twig' with {'entity':entity, 'callType':0} %}
    {% endfor %}
</ul>

<ul class="search-results">
    {% for entity in entities %}
        {% include 'SomeBundle:Users:renderUserResults.html.twig' with {'entity':entity, 'time_search':time_search, 'time_meeting_search':time_meeting_search} %}
    {% endfor %}
</ul>

renderUserResults.html.twig显然相关的内容只是:

{% set role = common.roleClass(entity.type)|trim %}
<li class="{{ role }}">
    // a bunch of html
</li>

但是,生成的代码在两种情况之间都有奇怪的区别。在第一个中,所有li元素都是一个接一个地生成的,它们之间只有一些空间被浏览器忽略。但在第二个问题中,Chrome Web Inspector会在每个li 之前显示一些非折叠空间,如下所示:

http://imgur.com/WsmI6g9

右键单击其中一个空格并选择&#34;编辑为HTML&#34;,出现此红点

http://imgur.com/p6xZ5lj

该空间阻止每个li的顶部和底部边距折叠(li s呈现为一列框),因此创建了我不想要的额外空间。我无法显示呈现列表的屏幕截图,所以我希望我提供了足够的信息。


所以最重要的是,我需要摆脱那些红点,但我不知道为什么或在哪里创建它们。正如您所看到的,两种情况之间的唯一区别是与include一起传递的参数集,但我看不出它会如何导致出现奇怪的字符。我已经尝试过在任何地方都使用{% spaceless %}标记,并且还手动删除了twig文件中的所有空格和换行符,但它们都没有工作。手动删除Web检查器中的红点会使html标记之间的所有空格再次崩溃,但当然这不是一个选项。

1 个答案:

答案 0 :(得分:4)

这些是您的文件包含utf8 Byte Order Mark的症状。它呈现为一个隐形字符并且可以轻松破坏PHP代码,建议您始终保存没有BOM的utf8文件 - 所有最近的编辑都支持此。