Html 在细枝之间渲染的不可见字符包括

Html 在细枝之间渲染的不可见字符包括,html,symfony,twig,byte-order-mark,Html,Symfony,Twig,Byte Order Mark,我遇到了一个奇怪的问题,一个小树枝include在我的HTML中呈现了一些不可见的字符。我试过用上千种不同的方式在谷歌上搜索,但找不到有类似问题的人。事实上,我甚至不确定它是否与Twig或Symfony相关,所以我不确定我需要寻找什么。我试试看 在我的一个视图中的两个不同点上,我使用for循环通过includeing一个单独的细枝文件来渲染每个li,每次使用一组不同的参数。这两个循环是: {entities%%中实体的百分比} {%include'SomeBundle:Users:render

我遇到了一个奇怪的问题,一个小树枝
include
在我的HTML中呈现了一些不可见的字符。我试过用上千种不同的方式在谷歌上搜索,但找不到有类似问题的人。事实上,我甚至不确定它是否与Twig或Symfony相关,所以我不确定我需要寻找什么。我试试看

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

    {entities%%中实体的百分比} {%include'SomeBundle:Users:renderUserResults.html.twig'和{'entity':entity'callType':0}%} {%endfor%}

    {entities%%中实体的百分比} {%include'SomeBundle:Users:renderUserResults.html.twig'和{'entity':entity,'time\u search':time\u search,'time\u meeting\u search':time\u meeting\u search}%} {%endfor%}
renderUserResults.html.twig
的明显相关内容只是:

{%set role=common.roleClass(entity.type)| trim%}
  • //一堆html

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

    当右键单击其中一个空格并选择“编辑为HTML”时,这个红点出现

    该空间防止了每个
    li
    的上下边距塌陷(
    li
    s被渲染为一列框),因此创建了我不想要的额外空间。我无法显示渲染列表的屏幕截图,因此我希望我提供了足够的信息



    所以底线是,我需要去除那些红点,但我不知道为什么或者在哪里产生它们。如您所见,这两种情况之间的唯一区别是随include传递的一组参数,但我看不出这会导致出现奇怪的字符。我已经尝试在任何地方使用
    {%spaceless%}
    标记,还手动删除了细枝文件中的所有空格和换行符,但没有一个有效。手动删除web inspector中的红点会使html标记之间的所有空格再次折叠,但这当然不是一个选项

    这些是文件包含utf8的症状。它呈现为一个不可见的字符,很容易破坏php代码,建议您始终保存utf8文件而不保存BOM表-所有最近的编辑器都支持此功能。

    保存的小树枝文件是什么格式?UTF-8或ANSII或其他什么?我想他们在UTF-8中,尽管我不是100%确定(这是一个大型Symfony项目的一部分,我对Symfony很陌生)。这个扩展的基本模板在顶部有一个标记,所以我猜项目中的所有视图都是这种格式的。你在Chrome或其他浏览器中也有这个问题吗?是的,Firefox和Safari也是这样。我现在不能用IE测试。编辑:刚刚又看了一眼,火狐和Safari web inspectors中都没有出现红点,但额外的空间仍然存在。你能确认文件是utf8格式的,没有BOM字符吗?最终可能会出现这些症状。是的,就是这样。我用UTF-8保存了文件,没有BOM编码,解决了这个问题。非常感谢。