亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現類似新浪微博長URL轉短地址的方法

2020-01-24 01:55:08
字體:
來源:轉載
供稿:網友

本文實例講述了C#實現類似新浪微博長URL轉短地址的方法。分享給大家供大家參考。具體如下:

一、前臺判斷用戶輸入URL的JS代碼如下。

function CheckInput() {  var $txtLength = $("#inp_text").val().length;  if ($txtLength > 10) {   var url = $("#inp_text").val();   var xx = url.match(RegExp("((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(//.[-A-Za-z0-9]+)*(//.[-A-Za-z]{2,5}))|([0-9]{1,3}(//.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_//$//.//+//!//*//(//),;:@&=//?/~//#//%]*)*", "gi") || []);   if (xx != null) {    for (var i = 0; i < xx.length; i++) {     var $txtLength = $("#inp_text").val().length;     $txtLength = $txtLength - xx[i].length + 11;    }   }  }  if ($txtLength < 141) {   $("#div_txtlength").html("還能輸入<span>" + (140 - $txtLength) + "</span>個字");  }  else {   $("#div_txtlength").html("超出<span>" + ($txtLength - 140) + "</span>個字");  } } function InsertText() {  if ($("#inp_text").val().Trim().length == 0) {   art.dialog({    title: '錯誤',    icon: 'error',    content: '請輸入內容',    width: "150px",    height: "80px",    lock: true   });   return;  }  //長url轉換成短url  var url = $("#inp_text").val();  var xx = url.match(RegExp("((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(//.[-A-Za-z0-9]+)*(//.[-A-Za-z]{2,5}))|([0-9]{1,3}(//.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_//$//.//+//!//*//(//),;:@&=//?/~//#//%]*)*", "gi") || []);  var $txtLength = $("#inp_text").val().length;  if (xx != null) {   for (var i = 0; i < xx.length; i++) {    $txtLength = $txtLength - xx[i].length + 11;   }  }  if ($txtLength < 141) {   $("#div_txtlength").html("還能輸入<span>" + (140 - $txtLength) + "</span>個字");  }  else {   $("#div_txtlength").html("超出<span>" + ($txtLength - 140) + "</span>個字");  }  if ($txtLength > 140) {   art.dialog({    title: '錯誤',    icon: 'error',    content: '字數超出限制',    width: "150px",    height: "80px",    lock: true   });   return false;  }  $.ajax({   type: "POST",   url: "../MiniBlog/Handler.ashx",   data: { "txt": $("#inp_text").val() },   datatype: "html",   beforeSend: function () { $("#div_txtlength").html("正在提交。。。"); },   success: function (data) {    if (data.length > 1) {     window.location.reload();    }    else {     art.dialog({      title: '錯誤',      icon: 'error',      content: '發布失敗,請復制內容后刷新當前頁面。',      width: "150px",      height: "80px",      lock: true     });    }   },   complete: function (XMLHttpRequest, textStatus) {    //     alert(XMLHttpRequest.responseText);    //     alert(textStatus);   },   error: function () {   }  }); }

二、前臺ASPX的代碼如下(部分)

<div class="title_left">  有什么新鮮事和大家分享?</div> <div class="left_box">  <textarea class="textarea01" id="inp_text" onblur="CheckInput()" onkeyup="CheckInput()"></textarea></div> <div class="left_box">  <div class="insert" style="visibility: hidden">   <ul>    <li style="background: url(../images/weibo/icon.jpg) no-repeat -172px 0px;"><a href="#"> 表情</a></li>    <li style="background: url(../images/weibo/icon.jpg) no-repeat -115px 0px;"><a href="#"> 圖片</a></li>    <li style="background: url(../images/weibo/icon.jpg) no-repeat -229px 0px;"><a href="#"> 音樂</a></li>   </ul>  </div>  <div class="Prompt" id="div_txtlength">   還能輸入<span>140</span>字</div>  <div class="bottom_gb">   <a href="javascript:void(0)" onclick="InsertText();" class="link1"></a>  </div> </div>

三、以上是用來判斷用戶輸入內容里面是否含有網址,下面是后臺提交到數據庫的時候進行的轉換

#region 長url轉短url Regex rx = new Regex("((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(//.[-A-Za-z0-9]+)*(//.[-A-Za-z]{2,5}))|([0-9]{1,3}(//.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_//$//.//+//!//*//(//),;:@&=//?/~//#//%]*)*", RegexOptions.IgnoreCase); string txt_context = context.Request.Form["txt"].ToString(); MatchCollection mc = rx.Matches(txt_context); if (mc.Count > 0) {    for (int i = 0; i < mc.Count; i++)    {     Haedu.Gxt.Model.MINIBLOGURL_Model M_url = new Haedu.Gxt.Model.MINIBLOGURL_Model();     Haedu.Gxt.Bll.MINIBLOGURL B_url = new Haedu.Gxt.Bll.MINIBLOGURL();     M_url.BACKUP1 = Common.md5(mc[i].Value);     M_url.BACKUP2 = " ";     M_url.CREATETIME = DateTime.Now;     M_url.CREATEUSER = User_BaseInfo.GetUserID;     M_url.ID = Common.GetGUID;     M_url.STATE = 0;     M_url.SURL = mc[0].Value;     M_url.TURL = MiniBlog.ShortUrl(mc[i].Value);     txt_context = txt_context.Replace(mc[i].Value, M_url.TURL);          if(!B_url.Exists(M_url.BACKUP1))     {      B_url.Add(M_url);     }    }   } #endregion #region 寫入微博數據庫 --寫入微博數據庫的代碼 #endregion

四、MiniBlog.ShortUrl方法代碼

#region 長轉短url /// <summary> /// 長url轉短url /// </summary> /// <param name="url">原url</param> /// <returns>返回短url</returns> public static string ShortUrl(string url) {   //可以自定義生成MD5加密字符傳前的混合KEY   string key = "Haedu_MiniBlog";   //要使用生成URL的字符   string[] chars = new string[]{     "a","b","c","d","e","f","g","h",     "i","j","k","l","m","n","o","p",     "q","r","s","t","u","v","w","x",     "y","z","0","1","2","3","4","5",     "6","7","8","9","A","B","C","D",     "E","F","G","H","I","J","K","L",     "M","N","O","P","Q","R","S","T",     "U","V","W","X","Y","Z"};   //對傳入網址進行MD5加密   string hex = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(key + url, "md5");   string[] resUrl = new string[4];   for (int i = 0; i < 4; i++)   {    //把加密字符按照8位一組16進制與0x3FFFFFFF進行位與運算    int hexint = 0x3FFFFFFF & Convert.ToInt32("0x" + hex.Substring(i * 8, 8), 16);    string outChars = string.Empty;    for (int j = 0; j < 6; j++)    {     //把得到的值與0x0000003D進行位與運算,取得字符數組chars索引     int index = 0x0000003D & hexint;     //把取得的字符相加     outChars += chars[index];     //每次循環按位右移5位     hexint = hexint >> 5;    }    //把字符串存入對應索引的輸出數組    resUrl[i] = outChars;   }   return "http://url.cn/" + resUrl[(new Random()).Next(0, 3)]; } #endregion

五、短URL轉換成原始URL

#region 短url替換成原始url public static string CheckUrl(string context) {   Regex rx = new Regex("((news|telnet|nttp|file|http|ftp|https)://){1}(([-A-Za-z0-9]+(//.[-A-Za-z0-9]+)*(//.[-A-Za-z]{2,5}))|([0-9]{1,3}(//.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_//$//.//+//!//*//(//),;:@&=//?/~//#//%]*)*", RegexOptions.IgnoreCase);   MatchCollection mc = rx.Matches(context);   if (mc.Count > 0)   {    for (int i = 0; i < mc.Count; i++)    {     Haedu.Gxt.Model.MINIBLOGURL_Model M_url = new Haedu.Gxt.Model.MINIBLOGURL_Model();     Haedu.Gxt.Bll.MINIBLOGURL B_url = new Haedu.Gxt.Bll.MINIBLOGURL();     M_url = B_url.GetModel(mc[i].Value);     if (M_url != null)     {      if (int.Parse(M_url.STATE.ToString()) == 2)      {       context = context.Replace(mc[i].Value, "鏈接已經被屏蔽");      }      else      {       context = context.Replace(mc[i].Value, "<a href=/"" + M_url.SURL + "/" target=/"_blank/" title=/"" + M_url.SURL + "/" >" + mc[i].Value + "</a>");      }     }    }   }   return context; } #endregion 

六、數據庫結構(oracle)

-- Create table create table MINIBLOGURL (  id   VARCHAR2(50) not null,  surl  VARCHAR2(200) not null,  turl  VARCHAR2(100) not null,  createtime DATE not null,  createuser VARCHAR2(50) not null,  state  NUMBER(1) not null,  backup1 VARCHAR2(200) not null,  backup2 VARCHAR2(200) not null ) tablespace TAB_GXT  pctfree 10  initrans 1  maxtrans 255  storage  (  initial 64K  next 8K  minextents 1  maxextents unlimited  ); -- Add comments to the columns comment on column MINIBLOGURL.id  is '邏輯ID'; comment on column MINIBLOGURL.surl  is '原始url'; comment on column MINIBLOGURL.turl  is '轉成的短url'; comment on column MINIBLOGURL.createtime  is '創建時間'; comment on column MINIBLOGURL.createuser  is '創建人ID'; comment on column MINIBLOGURL.state  is '狀態,0為認證的網址(比較知名的網站域名),1為未認證的網址(小網站),2為鎖定不允許點擊(廣告類的網址)'; comment on column MINIBLOGURL.backup1  is 'MD5值,用來比較網址是否已經存在'; comment on column MINIBLOGURL.backup2  is '備用字段2'; -- Create/Recreate primary, unique and foreign key constraints alter table MINIBLOGURL  add constraint PK_ID primary key (ID)  using index  tablespace TAB_GXT  pctfree 10  initrans 2  maxtrans 255  storage  (  initial 64K  next 1M  minextents 1  maxextents unlimited  ); -- Create/Recreate indexes create index IX_CREATEUSER on MINIBLOGURL (CREATEUSER)  tablespace TAB_GXT  pctfree 10  initrans 2  maxtrans 255  storage  (  initial 64K  next 1M  minextents 1  maxextents unlimited  ); create unique index IX_MD5 on MINIBLOGURL (BACKUP1)  tablespace TAB_GXT  pctfree 10  initrans 2  maxtrans 255  storage  (  initial 64K  next 1M  minextents 1  maxextents unlimited  ); create index IX_SURL on MINIBLOGURL (SURL)  tablespace TAB_GXT  pctfree 10  initrans 2  maxtrans 255  storage  (  initial 64K  next 1M  minextents 1  maxextents unlimited  ); create index IX_TURL on MINIBLOGURL (TURL)  tablespace TAB_GXT  pctfree 10  initrans 2  maxtrans 255  storage  (  initial 64K  next 1M  minextents 1  maxextents unlimited  ); 

至此,基于上面的代碼即可完成微博的長短URL相互轉換,具體應用的時候還需要自己進行調整修改。

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2021久久精品国产99国产精品| 91精品国产高清久久久久久| 亚洲精品一区久久久久久| 91国自产精品中文字幕亚洲| 久久久久国产一区二区三区| 欧美性猛交丰臀xxxxx网站| 欧美视频免费在线| 欧美一区第一页| 国产精品丝袜久久久久久高清| 亚洲欧美精品中文字幕在线| 国产精品福利久久久| 国产自摸综合网| 欧美性猛交xxxx久久久| 福利视频第一区| 1769国产精品| 日韩av色在线| 亚洲国模精品一区| 懂色av中文一区二区三区天美| 日韩大片在线观看视频| 精品调教chinesegay| 91免费观看网站| 日韩在线免费视频观看| 中文字幕久精品免费视频| 26uuu日韩精品一区二区| 亚洲欧洲中文天堂| 91爱视频在线| 亚洲永久免费观看| 尤物yw午夜国产精品视频明星| 国产一区二区三区久久精品| 国产精品视频中文字幕91| 日韩精品在线观看网站| 国产精品一香蕉国产线看观看| 国产精品99蜜臀久久不卡二区| 性金发美女69hd大尺寸| 久久精品一本久久99精品| 国产精品成人播放| 亚洲一区二区三区xxx视频| 18性欧美xxxⅹ性满足| 91大神福利视频在线| 国产精品久久久久影院日本| 日韩成人久久久| 久久精品国产69国产精品亚洲| 日本19禁啪啪免费观看www| 中文字幕免费精品一区高清| 欧美激情伊人电影| 国产精品久久久av久久久| 在线视频国产日韩| 久久视频在线播放| 久久久久久有精品国产| 超在线视频97| 亚洲精品天天看| 黑人巨大精品欧美一区二区| 国产午夜精品全部视频播放| 黄网站色欧美视频| 51午夜精品视频| 国产日韩在线视频| 亚洲欧美日韩精品久久奇米色影视| 欧美激情免费观看| 日韩有码片在线观看| 欧美精品手机在线| 久久久精品久久| 欧美一区二区三区精品电影| 国产69精品99久久久久久宅男| 久久99久久久久久久噜噜| 国产在线视频一区| 国产精品日韩在线观看| 一区二区三区美女xx视频| 大胆欧美人体视频| 午夜精品久久久久久99热| 色婷婷成人综合| 亚洲国产99精品国自产| 国产精品一区二区三区在线播放| 亚洲欧美日韩中文在线制服| 狠狠久久亚洲欧美专区| 日韩资源在线观看| 色一情一乱一区二区| 国产区亚洲区欧美区| 伦伦影院午夜日韩欧美限制| 成人黄色av播放免费| 成人精品一区二区三区电影黑人| 中文字幕一区日韩电影| 成人妇女免费播放久久久| 久久久久久久久久国产| 黑人极品videos精品欧美裸| 欧美激情va永久在线播放| 98精品国产自产在线观看| 成人精品一区二区三区电影黑人| 最近更新的2019中文字幕| 欧美成人精品三级在线观看| 欧美日韩国产成人在线| 国内精品在线一区| 欧美性xxxxx极品| 日韩av电影在线免费播放| 欧美激情亚洲一区| 亚洲影院色在线观看免费| 欧美精品第一页在线播放| 日本高清+成人网在线观看| xx视频.9999.com| 中文字幕在线看视频国产欧美| 久久激情视频免费观看| 亚洲大胆人体视频| 一区二区三区回区在观看免费视频| 亚洲a∨日韩av高清在线观看| 亚洲国产精品va在线看黑人| 精品国产一区二区三区四区在线观看| 亚洲大胆人体视频| 中文字幕国产亚洲2019| 国产精品一区电影| 欧美综合在线第二页| 国产欧美日韩精品在线观看| 国产精品老女人视频| 国产精品十八以下禁看| 国产精品亚洲精品| 国产精品视频在线观看| 亚洲男人天堂2023| 日韩综合视频在线观看| 一区二区国产精品视频| 欧美日韩国产丝袜美女| 亚洲网在线观看| 日产精品久久久一区二区福利| 日韩精品在线观看一区| 青青在线视频一区二区三区| 亚洲桃花岛网站| 亚洲三级 欧美三级| 欧美性视频在线| 97人人做人人爱| 国产在线观看91精品一区| 日韩在线视频国产| 美女999久久久精品视频| 成人免费在线视频网址| 欧美激情视频一区二区三区不卡| 国产精品偷伦视频免费观看国产| 狠狠色狠狠色综合日日五| 日韩电影在线观看中文字幕| 亚洲欧美在线磁力| 日韩电影中文字幕av| 日韩在线精品视频| 这里精品视频免费| 欧美乱妇高清无乱码| 欧美成人免费大片| 精品国产一区二区三区久久狼黑人| 久久久精品一区二区三区| 久久久久久av| 国产精品欧美激情在线播放| 国产成人自拍视频在线观看| 欧美精品激情在线观看| 欧美老女人bb| 国产成人高潮免费观看精品| 国产精国产精品| 一区二区三区四区在线观看视频| 日本国产精品视频| 国产精品网站入口| 免费91在线视频| 国产成人综合亚洲| 亚洲三级av在线| 欧美放荡办公室videos4k| 欧美华人在线视频| 日韩经典一区二区三区| 日本亚洲欧美三级| 亚洲欧美自拍一区| 中文字幕在线精品| 性欧美在线看片a免费观看| 欧美激情综合色综合啪啪五月| 美女啪啪无遮挡免费久久网站|