为自己的ASP网站系统构建一套标记语言_实用技巧

  作为动态网站在建设过程中难免遇到在线编辑文章的问题。HTML提供了一个textarea标记,但是实际上没有解决这个问题,因为从textarea的是纯文本。除非在输入的时候使用了HTML标记,否则在输出的时候将获得从头到尾毫无结构的一盘文字。WEB设计中通过DHTML构建一类所见即所得的在线编辑器对这个问题有了很好的解决。

  但是所见即所得并不是唯一的解决办法。笔者在上网过程中发现一些门户网站的在线编辑器非常有特色。它并不是所见即所得(但是提供了一个预览功能),而是一个textarea的文本域,但是又不支持HTML标记语言。而是有它自己的一套标记语言。

图1

图2
  笔者使用觉得非常流畅,总结其优点如下:

  第一, 它的标记不多,相对于HTML而言非常简单,而且通过回车可以自动生成段落,容易被一般用户所接受。笔者认为如果使用中文标记,可以被更多国内用户接受。

  第二, 相对所见即所得的编辑器而言用户更能掌握自己的文章结构,生成乱码少。

  第三, 可见性相对于HTML而言要好得多,加上预览功能后更佳。

  第四, 由于自己的标记语言不支持脚本,因而是更安全的.

  经过笔者一番思考和实践,现把构建这种属于自己的标记语言的方法公示:

  首先,我们为自己的网站确定一套简单而必要的标记语言。确定时把一些不必要的省略。拿我而言,我为自己的网站确定的标记语言如下:

  [图片]图片的网址[/图片]
  [大标题]文字内容[/大标题]
  [小标题]文字内容[/小标题] (考虑到用户可能会细分所以加上)
  [粗体]文字内容[/粗体]
  [斜体]文字内容[/斜体]
  [链接]网址[/链接]

  然后,提供一定的机制,让浏览器读懂我们的标记.那么,怎么让浏览器读懂我们自己确定的标记呢? 在内容显示的页面,我们需要写一个程序将我们的所有标记翻译成为标准的HTML标记,但是此前必须过滤掉用户输进来的HTML代码。

  第一步:过滤HTML代码.

  这个其实很简单,只要将所有的 “<” 标签替换为 “<” ,另外把所有 “>” 替换为 “>” 就可以了。在ASP中通过如下语句实现:

Content=replace(content,”<”,”<”)

Content=replace(content,”>”,”>”)

  (以上代码中,content是储存了我们要显示的内容的变量,下文中若出现也表示一样的意思。)

  第二步:将我们的标记翻译为HTML

  这个相对复杂一些,因为并不是简单的将所有[标签替换为<和]替换为>然后将里面的中文(比如图片)翻译为英文(比如IMG)就可以的。原因有两个:

  1 是我们的标记里面的内容,根据不同的分类需要做不同的处理:

  第一类,直接显示给用户的,比如:

[大标题]文字[/大标题]

  此时确实是只要将标签翻译成相应的英文,比如上面的标记翻译为<h1>文字</h1>就可以了.

  第二类,不直接呈现给用户的,比如:

[图片]图片网址[/图片]

  此时,标签中间的内容”图片网址”只是我们要显示的网址,在HTML中是作为<IMG>标签的SRC属性,而且这个标签在HTML中是不要结尾标签的.所以直接翻译的结果是肯定错误的.

  第三类,直接呈现同时又作为属性,比如:

  [链接]网址[/链接]

  2 是并非所有出项标记的地方都是要翻译的,比如,有时候用户需要用符号”[“和符号”]”来表现他们的内容,而这时候如果将这样的标记翻译为”<”和”>”肯定不是符合用户的心意的。

  分析了出现的问题,笔者将在下面给出编写程序的思路参考和一个参考的程序.

  由于不同的标签需要的翻译方式不一样,所以必须针对不同的标签,一个个的翻译.

  对于任何单个的标记,一篇文章内可能出现多此,也可能一次也不出现,程序应当从头到尾首先检查某一标记的开始标记(比如对”图片]图片地址[/图片]”是”[图片]”)出现的位置,一旦检查到了,然后从那个位置开始检查结束标记,如果也检查到了,则说明这是我们要的标记;如果结束标记没有检查到,那么说明那不是我们要的标记,而只是用户自己展示的内容。检查到之后,将标记翻译为HTML标记,并根据不同类型对标记中的内容作不同的处理.坐完以后从结束标记的位置又继续检查,直到文章结束。

  实际编写中,需要用到递归的思想.下面给出翻译[图片]图片地址[/图片]这个标记的范例程序.

Function TranslateImg(Str)
 Start=instr(str,”[图片]”) ‘检查标记的开始位置
 If start=0 then exit function ‘开始位置为0,表示没有这个标记,那么程序结束
 End=instr(start,str,”[/图片]” ‘检查继该开始位置之后所出现的结束标记位置
 If end=0 then exit function ‘结束标记出现位置为0,表示没有结束标记,程序结束
 MidStr=mid(str,start+4,end-start-4) ‘标记中间的内容
 ReplaceStr=mid(str,start,end-start+5) ‘标记中间的内容加上标记,作为将要替换的内容
 Str=replace(instr,ReplaceStr,”<img src=”&MidStr&”>”) ‘将标记翻译为HTML
 TranslateImg Str ‘递归执行该函数
End Function

  通过以上分析,相信读者能够通过自己的分析为自己的网站构建一套”MyHTML”标记语言了。

  在实际的开发中还会有一些课题需要攻破,比如:标记嵌套的处理;是在将用户提交到数据库之前就翻译还是待用户浏览文章从数据库中调出来时才翻译;为用户提供一些自动插入标记的按钮方便用户的操作体验登.本文仅作抛砖引玉之用希望引得读者一点欣赏。

时间: 2024-09-11 11:57:17

为自己的ASP网站系统构建一套标记语言_实用技巧的相关文章

为自己的ASP网站系统构建一套标记语言

    作为动态网站在建设过程中难免遇到在线编辑文章的问题.HTML提供了一个textarea标记,但是实际上没有解决这个问题,因为从textarea的是纯文本.除非在输入的时候使用了HTML标记,否则在输出的时候将获得从头到尾毫无结构的一盘文字.WEB设计中通过DHTML构建一类所见即所得的在线编辑器对这个问题有了很好的解决. 但是所见即所得并不是唯一的解决办法.笔者在上网过程中发现一些门户网站的在线编辑器非常有特色.它并不是所见即所得(但是提供了一个预览功能),而是一个textarea的文本

设计高可用和高负载的网站系统的几个注意事项_相关技巧

其实要设计一个高可用.高负载的系统还是有一定的规矩可循的,其手段无外乎向上扩展(Sacle Up 硬件扩展)或者向外扩展(Scale Out 软件扩展),这两种方案在某一阶段时期,会显著改善网站的性能,但不久之后,问题依旧.本文参考网上相关资料,试图提供一个可行的 "有限" 解决方案. 早期 1. 对业务应用进行垂直分割,将不同的业务边界划分出来.程序员常说的 "多层体系" 只是纵向解决了不同编程层次的划分,相对于业务而言,并没有做出什么处理.现在 SOA 大行其道

ASP.NET+XML打造网络硬盘原理分析_实用技巧

常用传输方式及其在特定环境下面临的困难 我们经常有这样的应用需求:通过网络交换公共数据文件以实现资源共享,同时保护私有数据不被非法访问,并使用简单.直观的方式操作.我们常用的文件传输FTP.Email邮件.网上邻居都能实现文件的传送.其中,"Ftp"功能最为强大,但使用起来却稍显复杂,一大堆设置足以让许多人望而止步,尤其用户数量不可预见时,针对特殊需求用户的设置将更加繁琐:"Email"是大家所熟悉的了,但它的传送不仅需要你连入Internet,而且它的安全性也是个

ASP.NET多彩下拉框开发实例_实用技巧

本文主要是演示如何读取系统颜色并在下拉框中的每个条目中显示对应的颜色,该源码主要展示以下内容:    1.如何获得System.Drawing.KnownColor颜色控件的列表枚举    2.如何排除系统环境颜色,如"Active Border"    3.如何分配颜色到下拉框的每个条目   代码详解:    命名下拉框为ddlMultiColor 来显示颜色名称及颜色,用<div>标签显示右侧矩形结果,Aspx代码如下 <table> <tr>

VS2015 Update2 构建 Android 程序问题汇总_实用技巧

自VS2015起, Visual Studio开始逐渐内置支持跨平台开发, 并且Visual Studio团队还额外发布了一个编译工具集Clang with Microsoft CodeGen, 方便开发人员进行跨平台代码的开发, 该工具集在VS 2015 Update 2时采用的 Clang 版本号是3.7. 与此同时VS的移动开发能力也不再局限于Windows Phone, 而是支持了包括Android, iOS在内的主流平台的应用开发. 和其它新特性首次被引入一样, 虽然历经了两次Upda

ASP.NET网站模板的实现(第2节)_实用技巧

我们的主要学习任务是掌握站点地图文件和站点导航控件的使用以及熟练掌握创建母版页和生成内容页的方法,开始学习吧 学习内容: 第一步,网站的面包屑导航 1.创建ASP.NET应用程序,运行Visual Studio2008,在菜单栏中选择"文件"→"新建"→"项目"命令,进行操作. 2.在"解决方案资源管理器"面板中,右击"解决方案'0931'",在弹出的快捷菜单中选择"添加"→"

ASP.NET通过第三方网站Bitly实现短链接地址程序_实用技巧

发微博很久了,或许是我之前没注意,现在特别关注那个微博中的图片链接和URL链接,总给我看不懂但是又那么短的感觉,反正不是我上传的地址,其实这里使用一个短链接服务功能,这里拿出来晒晒. 这里看看是指向淘宝的一个商品页面,链接地址是这样的 ,但是现在在微博中变成了红圈表名的那个样子,似乎看不懂了,而且你点击之后还是到你原有的页面.这里就是使用了短链接程序服务,包括图片等等都是这样,可以缩短url长度. Bitly 是世界上最流行的短链接服务,而且已经免费开放所有功能.点击访问官网 Bitly.com

ASP.NET MVC5网站开发添加文章(八)_实用技巧

一.添加文章 1.KindEditor富文本编辑器 到官方网站http://kindeditor.net/down.php下载最新版本,解压后把代码复制到项目的Scripts文件夹下. 2.添加界面的显示. 在ArticleController中添加Add 方法 /// <summary> /// 添加文章 /// </summary> /// <returns>视图页面</returns> public ActionResult Add() { retur

ASP网站生成静态html页面技术小结_应用技巧

生成HTML方法主要步骤只有两个:  一.获取要生成的html文件的内容  二.将获取的html文件内容保存为html文件  我在这里主要说明的只是第一步:如何获取要生成的html文件的内容:  目前常用获取html文件的内容的方法有以下几种:  1.  str="<html标记>内容</html标记>"  str=str&"<html标记>内容</html标记><html标记>数据库读取内容....<