最近在搜索一款可以高亮显示代码的wordpress插件,经过多种测试,发现能自动捕获<pre></pre>标签或者<code></code>标签的插件,就只属这款Crayon Syntax Highlighter 效果比较优秀,可以提供有好几十种模板给你选择,这里选择了下图的这种。

解决 Crayon Syntax Highlighter 中的HMTL转义问题

但如果你用的是默认的设置,你会发现HTML特殊字符转义出现问题,具体如下,正常情况应该是输出这样一段代码

解决 Crayon Syntax Highlighter 中的HMTL转义问题

但如果你用的是默认的设置,输出的却像以下的代码:

解决 Crayon Syntax Highlighter 中的HMTL转义问题

百度了一下,造成问题的原因是:wordpress在后台编辑框中提交的文本是要被保存到数据库,但在前台展示时才会经过Markdown转码。但是做的是先由Markdown根据语法转码后交由Crayon Syntax Highlighter进行代码高亮的渲染。而Markdown会将代码中的特殊符号经由HTML进行转义,而Highlighter会原封不动得显示<pre>标签中已经被转义的HTML代码,所以如上图所示,展示出来的是转义过后的&lt;等代码。

所以Highlighter必须在渲染时将转义过后的代码再转义回来。后台选项如下:

解决 Crayon Syntax Highlighter 中的HMTL转义问题

解决 Crayon Syntax Highlighter 中的HMTL转义问题