問題----〉
在做一個熱詞系統的時候遇到這樣一個問題,如“程序員的修養“是一個熱詞,“程序員“是一個熱詞,當我們在以 “《程序員的修養》是程序員的必修課 ”作簡單的查找替換的時候會發生什麼問題呢?
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替換回去,這樣就不會出現簡單替換的問題了;
問題的總結------------->
在寫代碼的時候,最好把各個元素都抽象出來,這樣更靈活,更容易控制。