ASP.net 關(guān)健詞加鏈接 By admin 2011/12/9 8:50:00 /// <summary> /// 為關(guān)鍵詞加上超鏈接 /// </summary> /// e.g.: /// string result=GetInnertLink("<a href="http//www.baidu.com" mce_href="http/www.baidu.com">Ningxi</a>Xi過得<span>XI<span>好<a href="http://www.absorbed3d.com" mce_href=) /// <param name="htmlcode">要把關(guān)鍵詞加上超鏈接的html源文本</param> /// <param name="keyword">將要加上超鏈接的關(guān)鍵詞</param> /// <param name="title">將要加上的超鏈接的描文本</param> /// <param name="url">將要加上的超鏈接的url地址</param> /// <param name="target">將要加上的超鏈接的打開方式</param> /// <param name="num">為html文本內(nèi)的前num個(gè)關(guān)鍵詞加上超鏈接,0代表全加上超鏈接</param> /// <returns>返回為關(guān)鍵詞加上超鏈接后的html文本</returns> public static string GetInnertLink(string htmlcode, string keyword, string title, string url, string target, int num) { string htmlcodeResult = htmlcode; //用于保存最新的html文本 string htmlcodeLower = htmlcodeResult.ToLower(); //用于保存最新的Hmtl文本的小寫,方便不分大小寫找出關(guān)鍵詞 string keywordResult = ""; //用于保存關(guān)鍵詞的原來面貌,可能是大寫,或者有大也有小 int keyIndex = 0; //關(guān)鍵詞所在位置 int currentIndex = 0; //每次搜索關(guān)鍵詞的開始位置 int currentNum = 0; //保存當(dāng)前加上了多少個(gè)有效超鏈接 int LBracketIndex = 0; //左尖括號(hào)<位置 int RBracketIndex = 0; //右尖括號(hào)>位置 if (num == 0) { num = htmlcode.Length; } while (currentIndex <= htmlcodeLower.Length && currentNum < num) { if (htmlcodeLower.IndexOf(keyword.ToLower(), currentIndex) > -1) { keyIndex = htmlcodeLower.IndexOf(keyword.ToLower(), currentIndex); LBracketIndex = keyIndex; do { LBracketIndex = htmlcodeLower.LastIndexOf("<", LBracketIndex - 1, LBracketIndex - currentIndex); } while (LBracketIndex != -1 && htmlcodeLower.Substring(LBracketIndex + 1, 1) == "/"); RBracketIndex = htmlcodeLower.LastIndexOf(">", keyIndex - 1, keyIndex - currentIndex); if (LBracketIndex <= RBracketIndex) { //不在標(biāo)簽的屬性內(nèi),可以有在標(biāo)簽開始與結(jié)束標(biāo)志內(nèi),或在開始與結(jié)束標(biāo)志外 LBracketIndex = htmlcodeLower.LastIndexOf("<", keyIndex - 1, keyIndex - currentIndex); if (LBracketIndex != -1 && htmlcodeLower.Substring(LBracketIndex + 1, 1) != "/") { //在開始與結(jié)束標(biāo)志內(nèi) //關(guān)鍵詞在開始標(biāo)簽與結(jié)束標(biāo)簽內(nèi),要再判定是不是a標(biāo)簽或pre標(biāo)簽 if (htmlcodeLower.Substring(LBracketIndex + 1, 1) == "a" || htmlcodeLower.Substring(LBracketIndex + 3, 3) == "pre") { //關(guān)鍵詞在開始與結(jié)束a標(biāo)簽或pre標(biāo)簽內(nèi),不可加超鏈接,循環(huán)再來 currentIndex = keyIndex + keyword.Length; } else { //可以加超鏈接 keywordResult = htmlcodeResult.Substring(keyIndex, keyword.Length); htmlcodeResult = htmlcodeResult.Remove(keyIndex, keyword.Length); htmlcodeResult = htmlcodeResult.Insert(keyIndex, "<a href=''" + url + "'' title=''" + title + "'' target=''" + target + "''>" + keywordResult + "</a>"); htmlcodeLower = htmlcodeResult.ToLower(); currentIndex = htmlcodeResult.IndexOf("</a>", keyIndex) + 4; currentNum += 1; } } else if ((RBracketIndex = htmlcodeLower.LastIndexOf(">", keyIndex - 1, keyIndex - currentIndex)) != -1) { // // 當(dāng)查找范圍內(nèi)存在''>''標(biāo)簽則說明在一個(gè)靜態(tài)控件中則需要判斷這個(gè)控件是否是a標(biāo)簽 // if (htmlcodeLower.Substring(htmlcodeLower.IndexOf(''<'', currentIndex) + 1, 2) == "/a") { //關(guān)鍵詞在a標(biāo)簽內(nèi)則不能添加超鏈接 currentIndex = keyIndex + keyword.Length; } } else { //在結(jié)束標(biāo)志外,可以加超鏈接 keywordResult = htmlcodeResult.Substring(keyIndex, keyword.Length); htmlcodeResult = htmlcodeResult.Remove(keyIndex, keyword.Length); htmlcodeResult = htmlcodeResult.Insert(keyIndex, "<a href=''" + url + "'' title=''" + title + "'' target=''" + target + "''>" + keywordResult + "</a>"); htmlcodeLower = htmlcodeResult.ToLower(); currentIndex = htmlcodeResult.IndexOf("</a>", keyIndex) + 4; currentNum += 1; } } else { //關(guān)鍵詞是標(biāo)簽內(nèi)的屬性值,不可加超鏈接,循環(huán)再來 currentIndex = keyIndex + keyword.Length; } } else { currentIndex = htmlcodeLower.Length + 1; } } return htmlcodeResult; } 分享聯(lián)系我們 掃二維碼與項(xiàng)目經(jīng)理溝通 我們?cè)谖⑿派?4小時(shí)期待你的聲音 感謝您的關(guān)注分享“ASP.net 關(guān)健詞加鏈接” 煙寒網(wǎng)絡(luò)真誠(chéng)為您服務(wù) ,點(diǎn)擊客服直接咨詢下單. 立即咨詢 我們服務(wù) 網(wǎng)站建設(shè) 高端網(wǎng)站建設(shè)服務(wù)商、相信品牌力量、相信知名企業(yè);制作后收費(fèi)13014982176! 微信小程序/微信公眾號(hào) 微信小程序 背靠10億流量,不論用戶需求是什么,都能被開發(fā)使用 一點(diǎn)創(chuàng)意,就能在“社交圈”中脫穎而出。 網(wǎng)站優(yōu)化/SEO 讓您的網(wǎng)站更靠近排名位置,讓客戶更容易找到您,seo優(yōu)化是一個(gè)漫長(zhǎng)過程,整個(gè)網(wǎng)站營(yíng)銷花最少的錢起最大的作用。