【问题标题】:asp classic replace <br> in section of output BBCode输出 BBCode 部分中的 asp 经典替换 <br>
【发布时间】:2015-03-05 01:50:41
【问题描述】:

我创建了一个演示文件,您可以下载它,并创建一个页面来查看它的运行情况。我需要做的是,所有的 标签,只需要在区域中删除(BBCode [code])

更新: 该代码不适用于多个 BBCode 标签。所以如果有

[网址] [地点] [乙]

或者别的什么,下面的脚本会破坏所有的标签。并且不会正确处理页面。

这里是演示页面的链接。 http://www.cffcs.com/test/EE/Main.asp

这里是下载 .zip 文件的链接。 http://www.cffcs.com/test/EE/Request.zip

如果有人可以帮助我,我将不胜感激。

使用了以下代码,但是,我发现它破坏了“[代码”部分中未涉及的所有其他内容 这是正在使用的,可以在上面的代码文件中找到。

Function ReplaceChar(strString)
    strString = Reggex(strString, "\[code=(.*?)\](.*?)\[\/code\]", "<code class=""$1"">$2</code>")
    ReplaceChar = strString
End Function



Function ProtectSQL(SQLString)
    SQLString = SQLString
    SQLString = Replace(SQLString, "'", "''") ' replace > with &gt;
    SQLString = Replace(SQLString, vblf,"<br>") ' replace vblf with <br /> (This is mainly used for Memo fields.
    SQLString = Trim(SQLString)
    ProtectSQL = SQLString
End Function


getText = ProtectSQL(request.form("Answers"))
bigString = ReplaceChar(getText)



'grab the left chunk of text starting to the position just after [code
startString = LEFT(bigString, INSTR(bigString, "<code ") + 6)
endString = RIGHT(bigString, LEN(bigString)-INSTR(bigString, "</code>")+1)
midString = REPLACE(bigString, endString, "")
midString = REPLACE(midString, startString, "")
midString = REPLACE(midString, "<br>",vbLf)
bigString = startString & midString & endString

【问题讨论】:

  • 至少尝试在您的代码中包含一个 sn-p 以显示您到目前为止所尝试的内容,链接可能会降低一些代码应该包含在帖子正文中。这也将帮助那些来这里寻找类似问题答案的人。
  • 更新了 Jen 提供的代码以及项目处理文件中的代码。
  • 发现问题。该代码正在破坏通过它传递的所有其他 BBCode。所以这就是整个爆炸时间的问题。我只是将其更改为查找 [code] 而不是 并通过 textarea 发送所有内容,哇啦,我看到所有其他 BBCode 标记都在闪烁。所以。这就是问题所在,该代码不适用于 BBCode 标签。那就是更新
  • 要修复 BBCode 问题,您必须关闭脚本中的开始标签。它不能保持打开状态,因为它会附着在所有带有标签的东西上并破坏它。 bigString, " ") + 6) 或 bigString, "[code=sql] ") + 10)

标签: replace asp-classic bbcode


【解决方案1】:

在经典 ASP 中,您只需要一个简单的Replace()

strString = REPLACE(strString, "<br>", vblf)

如果你只想替换字符串的一部分,它会变得有点复杂:

'grab the left chunk of text starting to the position just after [code
startString = LEFT(bigString, INSTR(bigString, "<code ") + 6)

'grab the right chunk of text starting just before the [/code
endString = RIGHT(bigString, LEN(bigString)-INSTR(bigString, "</code>")+1)

'clear out the beginning and end to just get the part between the code tags
midString = REPLACE(bigString, endString, "")
midString = REPLACE(midString, startString, "")

'replace the breaks 
midString = REPLACE(midString, "<br>",vbLf)

'put it all back together
bigString = startString & midString & endString

您可以使用 MID 函数来获取字符串的中间部分,而不是使用替换将 midString 与较大的字符串分开 - 请参阅此处以获取 MID 文档:http://www.w3schools.com/vbscript/func_mid.asp 为此,您还需要计算中间字符串的长度,使用 INSTR() 和 LEN() 的组合来获取位置: http://www.w3schools.com/vbscript/func_len.asp

【讨论】:

  • Jen,看起来,在我制作了演示之后,并开始在实际项目中使用数据库中的所有对象,嗯,它就像在演示中一样工作我已经在上面的链接中发布了。但是,当我在实际项目中运行它时,它会破坏 URL 链接,并破坏其他所有内容。所以,我要做的是检查我的代码,找出到底是什么导致它破坏了你的代码。因为必须有导致这个问题的东西。所以。这是关闭的。仁,你的代码很好用!!!!!!!!!!!!是我的代码杀死了它韦恩
  • @JenR 我认为在某些情况下,您的代码可能会替换 部分之外的
    标签。例如,如果在某处有一个带有空格的结束标记 (如 或 )。在这种情况下,您的代码可能会找到另一个块的结束标记,它会处理所有内容介于两者之间,即使它实际上不在当前块内
  • 啊,是的,我明白了……我假设只有一个 块,因为那是原始问题中的信息。
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
相关资源
最近更新 更多