这是一篇分享经历的文章,面向的读者是PHP、开发新手,由于我在撰写本文之前连PHP的语法都不懂,可以说是完全“黑箱”分析出来的,所以内容非常浅陋。

Simple Tags可以说是用户必备的之一,这个有一个功能叫做Auto Link Tags,用大白话说就是给你文章中出现的标签加上链接。

但是,这款是个老外写的,不能正确地支持中文的标签,虽然Leo制做了汉化版,但只是UI支持中文而已,依然不能正确支持中文标签。我决定要把这个问题解决掉!q s 本文来自Awaken的http://rainy-bow.com


求人不如求自己!本文来自Awaken的http://rainy-bow.com

下面,作为本地玩转WordPress的方法一文的实际应用,

我将介绍我是如何的。

1.给本地的安装上,可以直接将解压到Easy-PHP(不知道该为何物的请先阅读本地玩转WordPress的方法)的安装目录中,并进入后台激活之 本文来自Awaken的http://rainy-bow.com

2.仔细阅读的各个文件,可以发现位于2.5(2.3,视版本不同而不同,请大家各取所需)文件夹下的“simple-tags.client.php”中包含autoLinkTags这个函数,那么我们就仔细研究这个文件

3.用最传统的加print语句来,下面附上我所增加了一大堆输出语句后页面的显示效果

调试Simple Tags

我们注意到这样一段 本文来自Awaken的http://rainy-bow.com
调试Simple Tags1

再去看看源代码,根据前后的输出信息(is not inside anchor tags, not matches等等)的提示,我们确定了问题出现在这一段代码中:

调试Simple Tags2

这显然是preg_match(“#<\s*a\s+[^>]*>#i”, $token)返回了“假”,这是为什么呢?通过查阅资料,我得知了$match中出现的\b表示单词的边界,那会不会是这里的问题?因为中文都是连续的字符,不像英文,字与字之间用空格间隔。

于是,我尝试把 本文来自Awaken的http://rainy-bow.com

调试Simple Tags3

这一句话中的\b全部去掉,问题果然就解决了!

调试Simple Tags4

不过这样的话英文字符就无法正确匹配了,于是得分别处理标签是中文还是英文的情况

由于篇幅的限制,也因为本文重点在定位Bug的过程,这里就不详细介绍修改的过程了,有兴趣的同学可以自己去研究一下代码。大家可以直接猛击链接去下载支持中文标签的Simple Tags,如果你发现有什么Bug请与我联系

标签: , , , ,

Related posts