asp.net为关键词加上超链接,C#.net 为关键词加上超链接

想用asp.net为关键词加上超链接,C#.net为关键词加上超链接,功能要求:
1、为html文本里的自定义关键词加上超链接
2、关键词出面在html标签属性值,则不加超链接
3、在a或pre开始标签与结束标签内的的不加超链接
4、可以为关键词加上超链接的地方都加上超链接
5、文章里的关键词全都加上同个超链接,不符合搜索引擎优化,所以可以自定义替换次数就最好。

自己写了一个用asp.net为关键词加上超链接,C#.net为关键词加上超链接的方法,大家看看有什么地方可以改进的,想加快速度。有些条件可以没有考虑到,也希望指出。

C# code

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

/// <summary>  

 /// 为关键词加上超链接  

 /// </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.ningxi.com" mce_href="http://www.ningxi.com">快乐</a>!","xi","ningxi","http://www.ningxi.com","_blank",0)  

 /// <param name="htmlcode">要把关键词加上超链接的html源文本</param>  

 /// <param name="keyword">将要加上超链接的关键词</param>  

 /// <param name="title">将要加上的超链接的描文本</param>  

 /// <param name="url">将要加上的超链接的url地址</param>  

 /// <param name="target">将要加上的超链接的打开方式</param>  

 /// <param name="num">为html文本内的前num个关键词加上超链接,0代表全加上超链接</param>  

 /// <returns>返回为关键词加上超链接后的html文本</returns>  

 private static string GetInnertLink(string htmlcode, string keyword, string title, string url, string target, int num)  

 {  

     string htmlcodeResult = htmlcode;  //用于保存最新的html文本

     string htmlcodeLower = htmlcodeResult.ToLower();  //用于保存最新的Hmtl文本的小写,方便不分大小写找出关键词

     string keywordResult = "";  //用于保存关键词的原来面貌,可能是大写,或者有大也有小

     int keyIndex = 0;           //关键词所在位置

     int currentIndex = 0;       //每次搜索关键词的开始位置

     int currentNum = 0;         //保存当前加上了多少个有效超链接

     int LBracketIndex = 0;      //左尖括号<位置

     int RBracketIndex = 0;      //右尖括号>位置

     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)  

             {  

                 //不在标签的属性内,可以有在标签开始与结束标志内,或在开始与结束标志外  

                 LBracketIndex = htmlcodeLower.LastIndexOf("<", keyIndex - 1, keyIndex - currentIndex);  

                 if (LBracketIndex != -1 && htmlcodeLower.Substring(LBracketIndex + 1, 1) != "/")  

                 {  

                     //在开始与结束标志内  

                     //关键词在开始标签与结束标签内,要再判定是不是a标签或pre标签  

                     if (htmlcodeLower.Substring(LBracketIndex + 1, 1) == "a" || htmlcodeLower.Substring(LBracketIndex + 3, 3) == "pre")  

                     {  

                         //关键词在开始与结束a标签或pre标签内,不可加超链接,循环再来  

                         currentIndex = keyIndex + keyword.Length;  

                     }  

                     else

                     {  

                         //可以加超链接  

                         keywordResult = htmlcodeResult.Substring(keyIndex, keyword.Length);  

                         htmlcodeResult = htmlcodeResult.Remove(keyIndex, keyword.Length);  

                         htmlcodeResult = htmlcodeResult.Insert(keyIndex, "<a href=" + url + " mce_href=" + url + " title=" + title + " target=" + target + ">" + keywordResult + "</a>");  

                         htmlcodeLower = htmlcodeResult.ToLower();  

                         currentIndex = htmlcodeResult.IndexOf("</a>", keyIndex) + 4;  

                         currentNum += 1;  

                     }  

                 }  

                 else

                 {  

                     //在结束标志外,可以加超链接  

                     keywordResult = htmlcodeResult.Substring(keyIndex, keyword.Length);  

                     htmlcodeResult = htmlcodeResult.Remove(keyIndex, keyword.Length);  

                     htmlcodeResult = htmlcodeResult.Insert(keyIndex, "<a href=" + url + " mce_href=" + url + " title=" + title + " target=" + target + ">" + keywordResult + "</a>");  

                     htmlcodeLower = htmlcodeResult.ToLower();  

                     currentIndex = htmlcodeResult.IndexOf("</a>", keyIndex) + 4;  

                     currentNum += 1;  

                 }  

             }  

             else

             {  

                 //关键词是标签内的属性值,不可加超链接,循环再来  

                 currentIndex = keyIndex + keyword.Length;  

             }  

         }  

         else

         {  

             currentIndex = htmlcodeLower.Length + 1;  

         }  

     }  

     return htmlcodeResult;  

 }  

时间: 2024-08-29 12:26:30

asp.net为关键词加上超链接,C#.net 为关键词加上超链接的相关文章

li列表中包超链接,使得用户选中的超链接是active状态,其他超链是非active状态

<div class="span3"> <ul class="nav nav-pills nav-stacked"> <li><a href="#" id="uploadFile">上传文件(WORD)</a></li> <li><a href="#" id="rawCorpus">生语料(T

wps超链接怎么做 wps怎么用超链接

https://zhidao.baidu.com/question/1578495421761997460.html 原文地址:https://www.cnblogs.com/VIPlued/p/8376220.html

JS批量替换内容中关键词为超链接,避开已存在的链接和alt、title中的关键词

懂点seo的人都知道要给内容中关键词加上链接,形成站内锚文本链接,这对seo有很大的帮助. 思路就是在数据库中录入若干个关键词和关键词对应的链接,当然链接可以根据关键词的id自动生成,或者直接用关键词作为链接参数,如?tag=1.?kw=关键词. 这个问题不是简单的一个批量replace那么简单,要考虑到已经存在的超链接,不能将里面的文字再次替换为超链接,还有就是图片的alt属性,或者其他标签的title属性,里面的文字也不该被替换. 见下面的HTML代码: [<a href="http:

小时到分钟 - 一步步优化巨量关键词的匹配

* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif; font-size: 15px } p { line-height: 25.6px; text-align: justify; margin: 23.7px 0 } blockquote { b

ASP.NET控件&lt;ASP:Button /&gt; html控件&lt;input type=&quot;button&quot;&gt;区别联系

ASP.NET控件<ASP:Button />-------html控件<input type="button">杨中科是这么说的:asp和input是一样的东西 服务器只认识input,我们可以直接写input 但是asp是要把自己自动翻译成input再交给服务器的.其实是一样的东西 写写我看到的区别:                asp控件,直接可以用c#编程                input加上 runat=“server” 也被c#编程了 说白

自学html-four(css初始化及html语义标签 -&gt; h标签 p标签 img标签 有序列表 无序列表 表格 超链接)

一.css初始化 现在我们来做一个简单的测试,测试步骤如下: 1.编写代码如下: 2.把改程序用不同的浏览器打开我们会发现同一份代码在不同的浏览器中的显示会有略微的差别: 360浏览器下显示效果图: 火狐浏览器下显示的效果图: 同一份代码在不同浏览器显示的效果存在差异的原因是:各浏览器对各元素的margin,border,font-size等的初始设置略有不同 解决方法:通过css强制让所有元素的属性值都一样 这里提供一段雅虎工程师css初始化代码,直接拷贝到css位置就可以了,body,div

百度搜索关键词上线大家快点踊跃使用吧

近日,百度站长平台对百度搜索关键词工具进行了全面的升级,统计数据越来越精细,指标描述也越来越亲民.对于广大SEOer来说,长期总结观察这些百度数据,对于更好的了解其站点优化情况,对于制定其未来的关键词优化方案都大有裨益.可以说,新的数据数量级别和指标描述的改变,也标志着百度正逐步将加快其完善算法的步伐,大家有望在未来享受更公正的优化排名规则. 这次,百度主要通过热门关键词和热门页面来描述网站的受欢迎状况.注意,所谓的热门关键词和热门页面,是针对您自己的网站而言的,不具有绝对的统一性.您网站通过哪

跟着杨中科学习asp.net之html

第一节课 HTML基础加强班 l 什么是浏览器? 1. 浏览器就是接受浏览者的操作(打开一个网址.点击一个链接.点击一个按钮),然后帮浏览者去web服务器请求网页的内容(html格式返回),然后展现成人眼能够看得懂的可视化的页面的软件. l IE=浏览器?这个说法是错误的.IE是浏览器的一种,还有FireFox.Opera.Charome等,注意遨游(Maxthon).世界之窗.搜狗浏览器.360浏览器等并不是一种独立于IE的浏览器,其内核还是IE的内核,只不过是换了一个外壳而已,所以用遨游的不

如何扩展和挖掘长尾关键词?

对于网站大部分的搜索流量来自于指数并不多的长尾关键词的现象,几乎是每个SEOer都常见到的事.越是大中型和门户型网站,长尾词的流量占比越重.因为每个人的搜索习惯都是完全不同的,这也就导致了关键词就会很发散.这也是为什么很多SEOer一直在呼喊要重视长尾词,并且要不停的的去拓展.去优化长尾词关键词的缘故.长尾关键词的挖掘也是一个比较繁琐的活,也是需要长期去坚持做的事情. 一.长尾关键词是什么? 网站上非目标关键词但也可以带来搜索流量的关键词,称为长尾关键词.长尾关键词的特征是比较长,往往是2-3个