|
|
|
|
|
最近在zblog文章發(fā)布時(shí)pre的使用上遇到一點(diǎn)問(wèn)題,那就是pre標(biāo)簽的內(nèi)容在發(fā)布后換行符<br>會(huì)自動(dòng)轉(zhuǎn)義,即是把換行符“<br>”換成了“VBCrLf”,但是在內(nèi)容編輯的時(shí)候,并沒(méi)有把“VBCrLf”換成“<br>”,這樣就導(dǎo)致pre里的內(nèi)容不再換行,需再手動(dòng)換行,這就給文章編輯帶來(lái)很大的不便。
如何才能不讓pre標(biāo)簽里的內(nèi)容發(fā)布后轉(zhuǎn)義呢?我研究了一下zblog的源碼,發(fā)現(xiàn)可以通過(guò)修改源代碼來(lái)實(shí)現(xiàn)要求。
打開(kāi)文件
\function\c_system_event.asp
然后找到函數(shù)
Function PostArticle()
修改一下
Case "fckeditor"
里的代碼,在代碼
objArticle.Content=Request.Form("txaContent")
下面,添加如下代碼:
'pre回車鍵轉(zhuǎn)義
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回車鍵轉(zhuǎn)義
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
... ...
通過(guò)這樣修改,文章發(fā)布后,pre標(biāo)簽里的內(nèi)容換行符“<br>”就不會(huì)被轉(zhuǎn)義成“VBCrLf”了。