我正在努力解决以下问题:我想在我的页面上包含一些代码示例。它们主要是php
,但也有html
和js
。
我最好的选择是使用一些基于js的语法高亮器。我选择SyntaxHighlighter,因为很多人在so和其他网站上推荐它。
但输出在树枝中逃逸怎么办?当然,默认的转义会导致代码显示漂亮的转义,但这并不能正常工作。使用|raw
来完成这项工作会导致另一个显而易见的问题:如果显示html,它会打断页面;如果显示javascript,它会破坏脚本。
另一个问题是,我需要转义的所有输出都是混合的,例如:
(some text, with html formatting)
<code class="someclass">
(block of code)
</code>
(some another text)
<code class="anotherclass">
(another block of code)
</code>
有了这些事实,我想——让我们为Twig编写自己的过滤器吧!这听起来很棒,但即使我能让它运行,我也无法让它按我想要的方式运行。
我想——我为什么要重新发明轮子?Twig和Symfony2已经退出多年了,可能其他人已经解决了这个问题,并以一种安全的方式做得很好。
我正在寻找四种东西中的一种:
- 自定义分支过滤器来处理此问题,或者
- 更好的语法着色脚本,将处理Twig转义的输出,或
- 其他解决方案,或
- 任何有用的提示
看看这本手册:
http://isometriks.com/geshi-symfony2-and-twig-extensions
它对我有效。