问题----〉
在做一个热词系统的时候遇到这样一个问题,如“程序员的修养“是一个热词,“程序员“是一个热词,当我们在以 “《程序员的修养》是程序员的必修课 ”作简单的查找替换的时候会发生什么问题呢?
1.把“程序员的修养“找到,做替换,如:
<a href="http://blog.csdn.net">程序员的修养</a>
2.把程序员找到作替换,结果是:
《<a href="http://blog.csdn.net"><a href="http://blog.csdn.net/nirvana52">程序员<a>的修养</a>》是<a href="http://blog.csdn.net/nirvana52">程序员</a>必修课
经过试验,发现了html是最小匹配,即,“程序员“有了连接而“程序员的修养”的连接被屏蔽了。
问题的解决------〉
1.我们可以把热词作一个权重的排序,可以是最大匹配,也可以是最小匹配。把文章内的热词替换成为一个标签;
用最大匹配为例:
$0->"程序员的修养";
$1->"程序员";
程序员的修养用$0替换则结果是:
第一次查找替换:
《$0》是程序员的必修课;
第二次查找替换:
《$0》是$1的必修课;
2.之后我们将$0,$1替换回去,这样就不会出现简单替换的问题了;
问题的总结------------->
在写代码的时候,最好把各个元素都抽象出来,这样更灵活,更容易控制。