指引网

当前位置: 主页 > 网站运营 > 建站经验 >

zblog如何避免pre标签内容发布后换行符<br>被转义成VBCrLf

来源:网络 作者:佚名 点击: 时间:2017-08-08 22:56
[摘要] 最近在 zblog 文章发布时pre的使用上遇到一点问题,那就是pre标签的内容在发布后换行符br会自动转义,即是把换行符br换成了VBCrLf,但是在内容编辑的时候,并没有把VBCrLf换成br,这样就导致

最近在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”了。

------分隔线----------------------------