0

我正在一个经典的 asp 应用程序中工作,该应用程序需要修改用户复制并粘贴到表单中的代码的功能。该用户被认为是不熟悉 html 的可信用户。

我正在尝试这样做,以便如果用户想要更改width=""提供的代码中的所有属性,那么他所要做的就是用正确的值填充文本框标签宽度,然后按保存/提交。然后脚本将查找所有宽度属性并在提供的 html 片段中更新它们的值。

我一直在研究一个正则表达式来做到这一点,但是在研究时我读到很多人不推荐这种类型的事情的正则表达式,而是宁愿使用某种 html 解析器对象。

经典 asp 中是否有可用的 html 解析器或 DOM 浏览器/编辑器,还是我只需要继续我的正则表达式开发?

对于正则表达式,这是我迄今为止所拥有的......仍然需要对其进行修改以对所有匹配项执行替换,而不仅仅是第一个匹配项:

function replaceBetween(sSource, sStart, sStop, sValue)

    thisNewValue = sStart & sValue & sStop

    set re = new regexp
    re.pattern = "(" & "" &sStart & ")(.*?)(" & sStop & ")"
    re.IgnoreCase = true

    response.write "Pattern: <b>" & re.pattern & "</b><br />" & vbnewline
    response.write "thisNewValue: <b>" & thisNewValue & "</b><br />" & vbnewline
    response.write "match: <b>" & re.test(sSource) & "</b><br />" & vbnewline

    replaceBetween = re.replace(sSource, thisNewValue)


end function

sourceText = ("<div class='thisclass' id=""thisID""><a anotherthing="""" attribute=""one""><a attribute=""2""><a anotherattribute="" attribute=""three 3""></div>")
replacestart = "attribute="""
replacestop = """"
newvalue = "XXXX"

response.write "updated source: <b>" & server.HTMLEncode(replaceBetween(sourceText,replacestart,replacestop,newvalue)) & "</b><br />" & vbnewline
4

1 回答 1

0

您的 HTML 格式是否正确?如果是这样,您可以简单地使用 XML DomDocument。使用 XPath 查找要替换的属性。

您实际上也可以在 ASP 中使用 JScript 服务器端,这可能使您可以访问您可以使用的 HTMLDom 库。

于 2011-03-17T18:25:23.927 回答