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

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 139 ::
收藏到网摘: 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. 寻找所有