最近在zblog文章发布时pre的使用上遇到一点问题,那就是pre标签的内容在发布后换行符<br>会自动转义,即是把换行符“<br>”换成了“VBCrLf”,但是在内容编辑的时候,并没有把“VBCrLf”换成“<br>”,这样就导致pre里的内容不再换行,需再手动换行,这就给文章编辑带来很大的不便。 如何才能不让pre标签里的内容发布后转义呢?我研究了一下zblog的源码,发现可以通过修改源代码来实现要求。 打开文件 \function\c_system_event.asp 然后找到函数 Function PostArticle() 修改一下 Case "fckeditor" 里的代码,在代码 objArticle.Content=Request.Form("txaContent") 下面,添加如下代码: 'pre回车键转义 Dim myRe, mymatch, mymatchs, myhtm myhtm = "" set myRe = new RegExp myre.IgnoreCase =True myre.Global = True myre.Pattern = "<pre([^>]*?)>([\s\S]*?)</pre>" Set mymatchs = myre.Execute(objArticle.Content) for each mymatch in mymatchs myhtm = replace(mymatch.SubMatches(1),vbCrLf,"<br>") myhtm = replace(myhtm,vbLf,"<br>") objArticle.Content=Replace(objArticle.Content,mymatch.SubMatches(1),myhtm) next set mymatchs = nothing 最终代码如下: '///////////////////////////////////////////////////////////////////////////////////////// '********************************************************* ' 目的: Post Article '********************************************************* Function PostArticle()
... ...
Case "fckeditor" objArticle.Content=Request.Form("txaContent")
'pre回车键转义 Dim myRe, mymatch, mymatchs, myhtm myhtm = "" set myRe = new RegExp myre.IgnoreCase =True myre.Global = True myre.Pattern = "<pre([^>]*?)>([\s\S]*?)</pre>" Set mymatchs = myre.Execute(objArticle.Content) for each mymatch in mymatchs myhtm = replace(mymatch.SubMatches(1),vbCrLf,"<br>") myhtm = replace(myhtm,vbLf,"<br>") objArticle.Content=Replace(objArticle.Content,mymatch.SubMatches(1),myhtm) next set mymatchs = nothing
If objArticle.Intro="" Then s=objArticle.Content ... ... 通过这样修改,文章发布后,pre标签里的内容换行符“<br>”就不会被转义成“VBCrLf”了。
|