作为动态网站在建设过程中难免遇到在线编辑文章的问题。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 是并非所有出项标记的地方都是要翻译的,比如,有时候用户需要用符号”[“和符号”]”来表现他们的内容,而这时候如果将这样的标记翻译为”<”和”>”肯定不是符合用户的心意的。
分析了出现的问题,笔者将在下面给出编写程序的思路参考和一个参考的程序.
由于不同的标签需要的翻译方式不一样,所以必须针对不同的标签,一个个的翻译.