C\#문장 에 체인 을 추가 하 는 방법 을 실현 합 니 다.

왜 문장 에 내부 사슬 을 추가 해 야 합 니까? 
1.독자 에 게 유리 하 다
        제 가 내부 체인 글 을 좋아 하 는 최초의 동 기 는 독자 가 제 블 로그 에서 더 좋 은 읽 기 체험 을 하고 더 많은 가 치 를 얻 도록 하 는 것 입 니 다.만약 에 제 독자 가 제 글 을 방문 하면 그 가 필요 로 하 는 답 에 대답 할 뿐만 아니 라 더 많은 관련 내용 의 정 보 를 제공 하여 그들 로 하여 금 더 많은 관련 주제 에서 읽 을 수 있 게 한다 면 그들 은 조만간 제 블 로 그 를 좋아 하고 만족 시 킬 것 입 니 다.독 자 를 만족 시 키 는 것 이 우리 의 목표 이다.독 자 는 그들 이 만족 하면 보통 다시 방문 하고 그들의 친구 와 나눈다.
2.검색엔진 최적화(SEO)
      또 하나의 블 로그 가 서로 글 을 연결 하 는 중요 한 이 유 는 검색엔진 이 블 로그 의 링크 를 볼 때 내용 을 찾 을 수 있 을 뿐만 아니 라 블 로그 색인 을 만 들 고 블 로그 콘 텐 츠 의 순 위 를 높이 는 데 도 유리 하기 때문이다.다른 외부 블 로그 에서 만들어 진 링크 가치 가 가장 높 고 검색엔진 의 순 위 를 높 일 수 있 습 니 다.내부 체인 은 효과 가 좋 지 않 지만 순위 에 도 도움 이 됩 니 다.
3.페이지 조회 수 증가
      글 에서 링크 를 추가 하면 독자 가 다른 페이지 의 내용 을 방문 하 는 기 회 를 높 일 수 있 습 니 다.이것 은 많은 장점 을 가 져 옵 니 다.먼저 더 많은 방문 자 를 얻 는 데 도움 을 줄 수 있 습 니 다.만약 에 특정한 CPM(방문 횟수 에 따라 비용 을 받 습 니 다)광 고 를 실행 하고 있다 면 이것 은 매우 유익 합 니 다.그 다음 에 대량의 내부 체인 은 당신 의 블 로그 방문 자 에 게 블 로그 내용 이 풍부 한 인상 을 주 었 습 니 다.나 는 누군가가 당신 의 블 로그 에서 한 페이지 이상 의 페이지 를 보 았 을 때 그들 은 그것 을 기억 하고 구독 하 며 평론 하 며 항상 충실 한 독자 가 되 는 것 을 발견 했다.
이 세 가지 장점 은 뚜렷 한 역할 을 하지 않 는 것 처럼 보이 지만 많은 내용 을 가지 고 있 을 때 가 져 올 수 있 는 장점 은 가늠 할 수 없다.그래서 블 로 그 를 만 들 때 부터 내부 체인 부터 사이트 안의 다른 글 까지 구축 하 는 것 을 권장 합 니 다.이런 내부 체인 이 쌓 인 장점 은 매우 뚜렷 한 장점 을 가 져 올 것 입 니 다.
 물론 더 좋 은 점 이 있 습 니 다.바 이 두 가 알 고 있 습 니 다.말 하면 서 약간 주제 에서 벗 어 났 습 니 다.우 리 는 주로 C\#로 이 기능 을 어떻게 실현 하 는 지,말 이 많 지 않 습 니 다.건어물 에 올 라 갑 니 다!
첫 번 째 방법:(string src 는 텍스트 문 자 를 가리 키 며,IListkeys 는 일치 하 는 키워드 라 이브 러 리 집합 을 가리킨다) 

private string keyAddUrl(string src, IList<KeyWord> keys)
    {
      Regex reg = new Regex(@"(?i)(?:^|(?<!<a\b(?>[^<>]*))>)(?>[^<>]*)(?:<|$)");
      int length = 0;
      string temp = string.Empty;
      return reg.Replace(src, delegate (Match m)
      {
        temp = m.Value;
        length = temp.Length;
        for (int i = 0; i < keys.Count; i++)
        {
          string keyWordName = Regex.Escape(keys[i].KeyName);
          string keyWordUrl = Regex.Escape(keys[i].PCUrl);
          temp = Regex.Replace(temp, @"(?is)^((?:(?:(?!" + keyWordName + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + keyWordName +
            @"|</?a\b).)*)(?<tag>" + keyWordName + @")",
            @"$1<a href=""" rel="external nofollow" + keyWordUrl + @""" target=""_blank"" title=""${tag}"">${tag}</a>");
          if (length != temp.Length)
          {
            keys.Remove(keys[i]);
          }
          length = temp.Length;
        }
        return temp;
      });
    }
두 번 째 방법:(이것 은 내 가 생각 할 수 있 는 방법 이다)

/// <summary>
    ///       ,            
    /// </summary>
    /// <param name="content">        </param>
    /// <param name="type">       "  "</param>
    /// <returns></returns>
    [HttpPost]
    [ValidateInput(false)]
    public async Task<ActionResult> ContentReplace(string content, string type)
    {
      try
      {
        if (type == "edit")
        {
          content = WebHelper.ReplaceStrHref(content);
        }
        if (string.IsNullOrEmpty(content))
        {
          return Content("       ");
        }
        var list = await bll.GetAllList();
        if (list != null)
        {
          #region      
          //    
          Regex reg = null;
          int n = -1;
          Dictionary<string, string> dic = new Dictionary<string, string>();
          for (int i = 0; i < list.Count; i++)
          {
            if (Regex.Match(content, list[i].KeyName).Success)
            {
              string pattern = $"<a href=\"{list[i].PCUrl}\" target=\"_blank\">{list[i].KeyName}</a>";
              reg = new Regex(list[i].KeyName);
              content = reg.Replace(content, pattern, 1);
              if (Regex.Match(content, pattern).Success)
              {
                //             ,                    (dic),                    。
                reg = new Regex(pattern);
                n++;
                content = reg.Replace(content, "{" + n + "}", 1);
                dic.Add("{" + n + "}", pattern);
              }
            }
          }
          //           format
          if (dic.Count != 0)
          {
            int m = -1;
            foreach (string key in dic.Keys)
            {
              m++;
              if (content.Contains("{" + m + "}"))
              {
                content = content.Replace("{" + m + "}", dic[key]);
              }
            }
          }
          #endregion
          content = WebHelper.RemoveStrImgAlt(content);
          return Content(content);
        }
        else
        {
          throw new Exception("         ,          ");
        }
      }
      catch (Exception ex)
      {
        throw ex;
      }
    }
여기에 도 웹 헬 퍼 의 두 가지 방법 이 붙 어 있 습 니 다.(역할 방법 에 대한 설명 이 있 습 니 다)

/// <summary>
    ///        a  
    /// </summary>  
    public static string ReplaceStrHref(string content)
    {
      var r = new Regex(@"<a\s+(?:(?!</a>).)*?>|</a>", RegexOptions.IgnoreCase);
      Match m;
      for (m = r.Match(content); m.Success; m = m.NextMatch())
      {
        content = content.Replace(m.Groups[0].ToString(), "");
      }
      return content;
    }
    /// <summary>
    ///       Img  Alt        
    /// </summary>   
    public static string RemoveStrImgAlt(string content)
    {
      Regex rg2 = new Regex("(?<=alt=\"<a[^<]*)</a>\"");
      if (rg2.Match(content).Success)
      {
        content = rg2.Replace(content, "");
      }
      Regex rg = new Regex("(?<=alt=\")<a href=\"[^>]*>");
      if (rg.Match(content).Success)
      {
        content = rg.Replace(content, "");
      }
      return content;
    }
총결산
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 C\#문장 에 내부 사슬 을 추가 하 는 방법 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.만약 에 궁금 한 점 이 있 으 면 저 에 게 메 시 지 를 남 겨 주세요.편집장 은 제때에 여러분 에 게 답 할 것 입 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기