JS批量替換內(nèi)容中關(guān)鍵詞為超鏈接
懂點(diǎn)seo的人都知道要給內(nèi)容中關(guān)鍵詞加上鏈接,形成站內(nèi)錨文本鏈接,這對seo有很大的幫助。
思路就是在數(shù)據(jù)庫中錄入若干個關(guān)鍵詞和關(guān)鍵詞對應(yīng)的鏈接,當(dāng)然鏈接可以根據(jù)關(guān)鍵詞的id自動生成,或者直接用關(guān)鍵詞作為鏈接參數(shù),如?tag=1、?kw=關(guān)鍵詞。
這個問題不是簡單的一個批量replace那么簡單,要考慮到已經(jīng)存在的超鏈接,不能將里面的文字再次替換為超鏈接,還有就是圖片的alt屬性,或者其他標(biāo)簽的title屬性,里面的文字也不該被替換。
見下面的HTML代碼:
【<a rel="external nofollow" rel="external nofollow" >九寨溝概要</a>】九寨溝位于四川省阿壩州九寨溝縣境內(nèi),5A景點(diǎn),世界自然遺產(chǎn),有"五絕"之景色,我感到最絕的是海子,此生不能不去的景區(qū)。一年四季適合游,秋天是最美的。 <img src="" alt="九寨溝圖片" title="九寨溝圖片" />
這種情況你不能直接將九寨溝替換為超鏈接啊,不然第一個鏈接就會被替換為鏈接中包含鏈接,然后是圖片上的alt和title也替換了一個鏈接上去,這肯定是不符合HTML規(guī)范的。
情景一:排除屬性中的關(guān)鍵詞
匹配的正則為:關(guān)鍵詞[^<]*>,所以排除這個關(guān)鍵詞的正則為:關(guān)鍵詞?!([^<]*>)。
情景二:排除鏈接中的關(guān)鍵詞
匹配的正則為:關(guān)鍵詞[^<]*<\/a>,所以排除這個關(guān)鍵詞的正則為:關(guān)鍵詞?!([^<]*<\/a>)。
整合兩種情況的結(jié)果為:var reg=/關(guān)鍵詞(?!([^<]*>)|([^<]*<\/a>))/ig;
廢話不多說,最后給出一個完整的批量替換實例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標(biāo)題文檔</title> </head> <body> <div id="content"> 【<a rel="external nofollow" rel="external nofollow" >九寨溝概要</a>】九寨溝位于四川省阿壩州九寨溝縣境內(nèi),5A景點(diǎn),世界自然遺產(chǎn),有"五絕"之景色,我感到最絕的是海子,此生不能不去的景區(qū)。一年四季適合游,秋天是最美的。 <img src="" alt="九寨溝圖片" title="九寨溝圖片" /> </div> <hr /> <div id="new"> </div> <script> var c=document.getElementById("content").innerHTML; //var reg=/九寨溝(?!([^<]*>)|([^<]*<\/a>))/ig; var json=[ {'key':'九寨溝','url':'/九寨溝/'} ,{'key':'景點(diǎn)','url':'/景點(diǎn)/'} ,{'key':'景區(qū)','url':'/景區(qū)/'} ]; var reg; for(var i=0;i<json.length;i++){ var j=json[i]; reg=new RegExp(j.key+"(?!([^<]*>)|([^<]*<\/a>))","ig"); c = c.replace(reg,"<a href='"+j.url+"'>"+j.key+"</a>"); } document.getElementById("new").innerHTML=c; </script> </body> </html>
替換后的效果:
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- Node.js讀寫文件之批量替換圖片的實現(xiàn)方法
- js replace(a,b)之替換字符串中所有指定字符的方法
- JS實現(xiàn)添加,替換,刪除節(jié)點(diǎn)元素的方法
- js正則表達(dá)式replace替換變量方法
- javascript字符串替換函數(shù)如何一次性全部替換掉
- js中字符替換函數(shù)String.replace()使用技巧
- javascript中使用replaceAll()函數(shù)實現(xiàn)字符替換的方法
- js使用正則實現(xiàn)ReplaceAll全部替換的方法
- 用JS實現(xiàn)HTML標(biāo)簽替換效果
- JS替換字符串中字符即替換全部而不是第一個
相關(guān)文章
JavaScript幾種形式的樹結(jié)構(gòu)菜單
今天我主要講3種不同展示的JavaScript樹結(jié)構(gòu)菜單,分別是懸浮層樹(Tree)、右鍵菜單樹(ContextMenu)和節(jié)點(diǎn)樹(TreeMenu),目前都支持無限級層次。2010-05-05layui實現(xiàn)圖片虛擬路徑上傳,預(yù)覽和刪除的例子
今天小編就為大家分享一篇layui實現(xiàn)圖片虛擬路徑上傳,預(yù)覽和刪除的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09