大家都知道在wordpress的HTML编辑器里贴代码会被自动解释,而目前已知解决方法就是切换到可视化编辑器,而身为一个技术文占大半壁江山的程序媛,每次贴代码都要手动切换到可视化编辑器来转换实体符号,对我这个一心想kill可视化编辑器的人来说真是种折磨,刚好声声昨晚提出了这个问题,所以又折腾了一上午把问题解决了,但是目前本方法仅适用于wp.
转换至实体的符号:<
>
&
支持的标签:<pre>
<code>
用到的函数:htmlspecialchars()
此函数把一些预定义的字符转换为 HTML 实体。
以下代码扔到functions.php
function escapeCE($arr) { if (version_compare(PHP_VERSION, '5.2.3') >= 0) { //所需PHP版本 $output = htmlspecialchars($arr[2], ENT_NOQUOTES, get_bloginfo('charset'), false); } else { $needTo = array( //定义需要转换的标签 '&' => '&', '<' => '<', '>' => '>' ); $data = htmlspecialchars_decode($arr[2]); $output = strtr($data, $needTo); } if (! empty($output)) { //如果有实体符号则进行替换 return $arr[1] . $output . $arr[3]; } else { return $arr[1] . $arr[2] . $arr[3]; } } function replaceCE($data) { //匹配需要转换实体的标签 $replaceTag = preg_replace_callback('@(<pre.*>)(.*)(</pre>)@isU', 'escapeCE', $data); $replaceTag = preg_replace_callback('@(<code.*>)(.*)(</code>)@isU', 'escapeCE', $replaceTag); return $replaceTag; } add_filter( 'content_save_pre', 'replaceCE', 9 ); //通过wordpress的add_filter来挂钩 add_filter( 'excerpt_save_pre', 'replaceCE', 9 ); //支持摘要格式
发现代码多换行就显得不那么短了.
好了,以后可以安心贴代码了,今天没有福利,因为你们昨天不够热情,评论没上百,还比不上前一篇,我很桑心.
escape-character-entities is coded by http://xiaohudie.net. Any posts here is one hundred percent original, so please keep my link so as not to hurt this pretty girl. -
亲爱滴 不要桑心 额来凑数咧 :koubixiu:
@简搜博客 唉 技术文明显不受欢迎
@小蝴蝶 其实主要是因为像额这样的菜鸟 看不大明白 :koubixiu:
第一次看见程序媛,留个言。
@francis :mrgreen:
这个倒是接地气的实用功能,深夜顶起
@张书杨 谢谢~哈哈 别的也接地气的 你以后可能也会用到
技术女还是技术男啊。技术文章居多。
@wmtimes 女…
mark一下,昨刚试了一个代码高亮插件,后来觉得还是算了…… 对于咱来说,只用可是编辑器~~ :koubixiu:
@figo 我刚好反过来 只用html编辑器..
- -这玩意。。。好吧我准备翻译你的文章到英文博客上。。看看能不能收录。。
@方露宇 …..记得保留链接哦亲
我是每次都要切换一次才把这些符号换为html实体。不过有些时候需要加上一些html代码。所以这方法不太好
@yxiao 确实,只是提供一个方法了,如果不加html代码的话还是比较好用的
不怕麻烦的飘过
貌似会自动过滤反斜杠\啊!!!
@不亦乐乎 等我以后测试看看
太有效了,帮了大忙了,注释很详细,对新手来说很好理解,谢谢