您好我有一个需要编辑的ASP脚本。实际上我需要重新发送它发送的电子邮件,所以我需要从中编辑HTML。
问题是html(来自asp文件)每行都有
HTML = HTML & ="
在其中(加上一些其他变化)。我需要从该ASP获取HTML代码,摆脱开始的html = html
部分,编辑双""
并将它们转换为单个"
(我需要做一个接一个,因为变量中也有引号)。
然后,我用HTML重新设置页面,然后我需要将其转换回来,这样我就可以将它集成到ASP 中(基本上会介绍双重'"'再次和东西)
是的,我可以直接从ASP编辑HTML,但我不知道它的外观,因为我无法运行脚本(它需要来自服务器的其他文件,我无权访问。
问题:
有更好的方法吗?
直接预览我在ASP中所做的事情的一些方法。或者也许是一种工具,让我从ASP HTML转移到HTML并更快地返回。
我确定知道我现在所做的事情非常愚蠢,所以一定有更好的方法。
答案 0 :(得分:2)
您可以创建一个包含一些占位符的html模板文件,将其读入,替换占位符,然后在您的电子邮件中使用它。保存您不得不继续搞乱使用变量构建html。这个previous answer有一些关于可能解决方案的更多细节(使用代码示例)。
答案 1 :(得分:2)
正如@steve-holland mentions创建模板是避免代码中所有烦人的HTML字符串并使更改布局变得轻而易举的好方法。
我过去一直在研究HTML模板脚本,通常我会构建一个Scripting.Dictionary
,其中包含我将在模板中替换的键值对。
Function getHTMLTemplate(url, params)
Dim stream, keys, html, idx
Set stream = Server.CreateObject("ADODB.Stream")
With stream
.Type = adTypeText
.Charset = "utf-8"
Call .Open()
Call .LoadFromFile(url)
html = .ReadText(adReadAll)
Call .Close()
End With
Set stream = Nothing
keys = o_params.Keys
For idx = 0 To UBound(keys, 1)
html = Replace(html, keys(idx), params.Item(keys(idx)))
Next
Set keys = Nothing
Set params = Nothing
getHTMLTemplate = html
End Function
用法:
Dim params, html
Set params = Server.CreateObject("Scripting.Dictionary")
With params
.Add("[html_title]", "Title Here")
.Add("[html_logo]", "/images/logo.gif")
'... and so on
End With
html = getHTMLTemplate(Server.MapPath("/templates/main.htm"), params)
Call Response.Write(html)
示例main.htm
结构:
<!doctype html>
<html>
<head>
<title>[html_title]</title>
<link rel="stylesheet" type="text/css" href="/styles/main.css" />
</head>
<body>
<div class="header">
<img src="[html_logo]" alt="Company Name" />
</div>
</body>
</html>
为什么要使用ADODB.Stream
代替Scripting.FileSystemObject
?;
如果需要,您可以控制返回的Charset
,甚至可以从一个转换为另一个。
如果模板特别大,您可以使用具有特定缓冲区大小的Read()
方法流式传输内容,以提高读取性能。