loading tweet...

wordpress里发代码的技巧

August 11th, 2006 | htmlor | blogging, 技巧 | 11 Comments »

wordpress的blog平台我很喜欢,但它有个让人很不爽的地方,就是很难方便又准确的贴出代码。往往浏览器里显示正常,贴进来就完全走样,回车变成空格,html标记显示不了,有的字符还少半拉…… 种种问题不一而足,对经常要贴代码的开发者真是一种折磨。

测试多次后发现,最常见的问题是:内容提交后,回车跟tab无效(即使在<pre>标记里),多个空格无效(即使把空格转换成 &nbsp;),html标记不显示(即使把 <> 转换为 &lt;&gt;),\n 变成了 nsrc="url"(除<img>标记之外)多了 mce_src="url" …… 没有太仔细的研究,大致就是这样。

在实践中摸索到了一些经验,也就有了相应的解决方法。(注:以下均为在源代码编辑状态下的代码)

  • 代码中的回车应该使用<br>,连续空格(比如缩进)应该使用 &amp;nbsp;(或 &amp;#32;
  • html标记中,应该把 < 替换为 &amp;lt;(或 &amp;#60;),> 替换为 &amp;gt;(或 &amp;#62;
  • \n(换行经常用到)应该替换为 \\n(或 &amp;#92;n
  • src="url"(<script>和<iframe>标记中用到比较多)中的 src 应该替换为 &amp;#115;&amp;#114;&amp;#99;

其实以上几点可以归纳为一点,那就是:把敏感字符替换成“处理”过的unicode值。正常的unicode值为 &#65; 的形式(& + # + ascii码值 + ;),把其中的 & 再次替换为 &amp; 变成 &amp;#65; 的形式,就大功告成了。

附:要查看各个字符的ascii码值表,这儿有一份。


11 Comments on “wordpress里发代码的技巧”

  1. 1 hiads said at 13:13 on August 11th, 2006:

    我也正为这个问题困扰着。有没有方便的法子呢,这样的话,如果代码太多,修改起来很麻烦的。

  2. 2 htmlor said at 13:22 on August 11th, 2006:

    更方便的方法我还不知道,只能等待wordpress改进了。不过可以用批量替换的方式减小工作量。

  3. 3 calon said at 21:20 on August 13th, 2006:

    装显示代码的插件不行吗?

  4. 4 htmlor said at 23:02 on August 13th, 2006:

    calon
    不太明白你的意思?

  5. 5 3751 said at 21:17 on August 15th, 2006:

    我都想换blog了。

  6. 6 左飞 said at 20:49 on September 2nd, 2006:

    很简单,试试把字体改成斜体,问题应该可以解决。

  7. 7 cherami said at 14:41 on October 24th, 2006:

    换成FCKEditor吧可以解决大部分的问题。

    WordPress自带的TinyMCE编辑器太糟糕了:http://www.jiehoo.com/2006/10/22/wordpress%e8%87%aa%e5%b8%a6%e7%9a%84tinymce%e7%bc%96%e8%be%91%e5%99%a8%e5%a4%aa%e7%b3%9f%e7%b3%95%e4%ba%86/

  8. 8 yskin said at 11:10 on December 12th, 2006:

    WordPress的TinyMCE还是有点问题,不过我宁可在出现问题的时候去研究WP源代码,或者直接关掉TinyMCE来编辑这一篇文章,也不愿意换用FCKEditor。因为WP集成的TinyMCE做了很多修改以适应WP的环境,乱换编辑器是不好地。

    斜线消失的问题,可以打两个斜线,显示出来就是正确的一个了。不过,下次再编辑时,这一个斜线又会消失了。

    在文章里贴源代码的问题,还是应该和代码高亮问题一起解决下。

  9. 9 积水成渊博客 said at 21:15 on June 17th, 2008:

    遇到这个问题,搜索到这里来的。虽然没有弄成功(我自己的因素),还是感谢博主的分享。

  10. 10 CodeRoar's Blog » Blog Archive » wordpress里发代码的技巧 said at 19:38 on July 24th, 2008:

    [...] 引用:htmlor’s blog [...]

  11. 11 Dim said at 17:35 on April 6th, 2009:

    嗯~
    也遇到这个问题了,
    我的做法是用自己的文本编辑器先把该处理掉的字符处理掉,
    然后再贴到wp里。


Leave a Reply