当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用Regular Expression来改变HTML代码

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

ASP 中的 用Regular Expression来改变HTML代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 145 ::
收藏到网摘: n/a

       我最近在为一个客户开发在线论坛程序,我想把用户发言中的url或e-mail地址用超链接显示出来. 用JavaScript的regular expressions是最容易实现的.
  
  用户在表单里的多行文本框中输入他们的发言内容,然后把消息送到论坛的用户发言区中,然而,在把消息在论坛里显示出来之前,我要调用一个函数来处理消息,对url动些手脚.
  
  我不想在这里讨论如何从数据库里取得一条记录了,这个站点已经说得很透彻了. 我们假设用户的消息文本存放在数据库中,并被赋予了一个叫s_message的变量.
  
  <%
  
  '...start the page and spit out html to the browser
  
  'call the function to convert the message
  Response.Write to_html(s_message)
  
  %>
  
  函数如下:
  
  
  <%
  Function to_html(s_string)
  
  to_html = Replace(s_string, """", """)
  to_html = Replace(to_html, "<", "<")
  to_html = Replace(to_html, ">", ">")
  to_html = Replace(to_html, vbcrlf, "
  ")
  to_html = Replace(to_html, "/<", "<")
  to_html = Replace(to_html, "/>", ">")
  to_html = edit_hrefs(to_html)
  
  End Function
  %>
  
  <script language="javascript1.2" runat=server>
  function edit_hrefs(s_html){
  
  // use regular expressions to look for
  // e_mail addresses and urls
  s_str = new String(s_html);
  
  s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi,
  "http\:\/\/?¤?$1");
  
  s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
  "<a href=\"$1\">$1<\/a>" target=_blank);
  
  s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi,
  "<a href=\"http://$1\">$1</a>" target=_blank);
  
  s_str = s_str.replace(/\bhttp\:\/\/?¤?(\.[\w+\.\:\/\_]+)/gi,
  "<a href=\"http\:\/\/www$1\">http\:\/\/www$1</a>" target=_blank);
  
  s_str = s_str.replace(/\b(\w+@[\w+\.?]*)/gi,
  "<a href=\"mailto\:$1\">$1</a>" target=_blank);
  
  
  return s_str;
  
  }
  </script>
  
  上面的代码做了这些事儿:
  
  1. 把引号转换成"这样的html元素. 这不是必需的,但最好这么做.
  
  2. 把小于号转换成html元素<. 这样的话,如果有人在发的消息里用到了小于
  号,html会正确输出. 另外,也防止某些人耍小花招,比如用<b>bold</b>来特定的字以粗体显示.
  
  3. 把大于号转换成>. 原因同上.
  
  4. 把回车换行转换成html换行标签"
  "
  
  5. 这就是我们要动的手脚. 它允许人们在代码里放入简单的html并逃脱代码的转换. 然而,他们得用"/"来避开对"<>"的代码检查. 我想总会有人找出绕过代码转换的办法的,如果他们办到了,用"牛"来形容他们的水平是再恰当不过的了.
  
  6. 最后,调用JavaScript的edit_hrefs的函数.
  
  现在,让我们来看看每行的JavaScript的函数做了些甚麽:
  
  1. 为传递函数的参数创建一个字符串对象.
  
  2. 把所有的http://www.[something]找出来,转换成http:////?¤?.
  [something]. 这是一个临时性的措施,处理所有的www.[something]. 因此
  http://www.pinarello.com/被替换成http://?¤?.pinarello.com/.
  
  3. 转换其余的http://[something],有些网址是不以www开头的. 比如
  http://uk.imdb.com/将被转换为<a
  href="http://uk.imdb.com/">http://uk.imdb.com/</a>
  
  4. 寻找所有