分享
 
 
 

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

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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

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

图1

图2

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

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

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

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

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

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

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

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

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

[小标题]文字内容[/小标题] (考虑到用户可能会细分所以加上)

[粗体]文字内容[/粗体]

[斜体]文字内容[/斜体]

[链接]网址[/链接]

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

第一步:过滤HTML代码.

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

Content=replace(content,”<”,”&lt;”)

Content=replace(content,”>”,”&gt;”)

(以上代码中,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”标记语言了。

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有