Blade 模板系统中可能存在 html 个特殊字符的错误
Possible bug in Blade templating system with html special characters
我不确定这一点,但在带有 Laravel 5.1.
的 Blade 模板上,变音符号、重音字符等似乎有些奇怪
我用一个以 ä 字母结尾的字符串将我的头撞在墙上,无论我尝试什么,我真的,真的无法用 html_entity_decode 解码。
这是我的 Blade 模板文件中的内容,因为我快要发疯了:
{{ html_entity_decode('just-another-string-ä') }}
现在,当我在浏览器中呈现模板时 window 我显然得到:
just-another-string-ä
但在源代码中我有以下内容:
just-another-string-äauml;
根据我的理解,这并不代表我在 blade 模板中给出的字符串。
...几分钟过去了...
一段时间后,我将字符串更改为:
just-another-string-ä-test
作为 source-code 结果,我得到:
just-another-string-ä-test
这确实比我用第一个字符串得到的 "almost-double-auml" 更容易解码。除了最终的 letter/word 替换之外,我还注意到当我在 Blade 模板中的行后输入换行符时,一切都按预期工作。
{{ html_entity_decode('just-another-string-ä') }}
{{-- erase this comment --}}
并且源代码中的一切都是有序的:
just-another-string-ä
我是不是完全漏掉了什么,或者这闻起来像个虫子?
好的,我找到了问题,虽然不是真正的解决方案。
经过调查,我发现这不是 Blade 的问题。它既不是 PHP 也不是 Apache - 这是您的浏览器。
例如,只需为自己创建一个包含以下内容的 HTML 文件:
this-is-a-string-ä
对我来说(至少在 Chrome,我没有测试过其他浏览器),这会产生与您所看到的相同的问题。如果您没有尾随换行符,查看源代码将会中断,但如果您有一个,也没关系。
因此解决方案很简单,在您的文本编辑器中启用 "blank newline at end of file" 设置。无论如何你真的应该打开它,例如 diffs 在文件末尾有一个空行时效果更好(他们看不到 none 的区别),这意味着,通过扩展, Git 之类的版本控制系统可以更好地处理它们。我发现启用此功能并没有什么坏处。
我想这几乎肯定是一个已知问题,但我没有研究 Chrome 问题跟踪器或任何东西。不过,如果您确实想查个水落石出,请随意这样做。我很想知道:)
我不确定这一点,但在带有 Laravel 5.1.
的 Blade 模板上,变音符号、重音字符等似乎有些奇怪我用一个以 ä 字母结尾的字符串将我的头撞在墙上,无论我尝试什么,我真的,真的无法用 html_entity_decode 解码。
这是我的 Blade 模板文件中的内容,因为我快要发疯了:
{{ html_entity_decode('just-another-string-ä') }}
现在,当我在浏览器中呈现模板时 window 我显然得到:
just-another-string-ä
但在源代码中我有以下内容:
just-another-string-äauml;
根据我的理解,这并不代表我在 blade 模板中给出的字符串。
...几分钟过去了...
一段时间后,我将字符串更改为:
just-another-string-ä-test
作为 source-code 结果,我得到:
just-another-string-ä-test
这确实比我用第一个字符串得到的 "almost-double-auml" 更容易解码。除了最终的 letter/word 替换之外,我还注意到当我在 Blade 模板中的行后输入换行符时,一切都按预期工作。
{{ html_entity_decode('just-another-string-ä') }}
{{-- erase this comment --}}
并且源代码中的一切都是有序的:
just-another-string-ä
我是不是完全漏掉了什么,或者这闻起来像个虫子?
好的,我找到了问题,虽然不是真正的解决方案。
经过调查,我发现这不是 Blade 的问题。它既不是 PHP 也不是 Apache - 这是您的浏览器。
例如,只需为自己创建一个包含以下内容的 HTML 文件:
this-is-a-string-ä
对我来说(至少在 Chrome,我没有测试过其他浏览器),这会产生与您所看到的相同的问题。如果您没有尾随换行符,查看源代码将会中断,但如果您有一个,也没关系。
因此解决方案很简单,在您的文本编辑器中启用 "blank newline at end of file" 设置。无论如何你真的应该打开它,例如 diffs 在文件末尾有一个空行时效果更好(他们看不到 none 的区别),这意味着,通过扩展, Git 之类的版本控制系统可以更好地处理它们。我发现启用此功能并没有什么坏处。
我想这几乎肯定是一个已知问题,但我没有研究 Chrome 问题跟踪器或任何东西。不过,如果您确实想查个水落石出,请随意这样做。我很想知道:)