读取一个 ASP-Classic 文件,但以文本格式逐行显示结果,而不是先呈现结果

Read an ASP-Classic file , but display the results line by line in text format instead of rendering the results first

我的问题涉及读取 ASP 文件,而不是在 ASP 或 HTML 中呈现它们。当它在屏幕上显示结果时,我需要它们采用文本格式。我的意思是,所有 HTML 标签(例如 <html><script>)都被呈现而不是显示。因此,它不会在屏幕上打印单词 <style>,而是执行命令,如果可能的话,这与我想要发生的相反。

更复杂的是,在我解决这个问题之后,我 运行 遇到了一个我之前遇到的问题,很难用 ASP 块的 <% 和 %> 标签做同样的事情,当我需要它来显示结果时,这显然只是 运行 块。

总结 - 我正在尝试从 asp 文件中获取纯文本,就像它只是一个文本文件一样,而不是执行 ASP 经典片段。然后我需要通过替换或正则表达式系统 运行 每一行,然后用我自己的 CSS 标记将渲染放回原处,想想一个自制的 IDE 类型系统,它标记了当我指定某些显示元素在找到时触发时的行。我想为 CSS 样式放置自定义标签,所以当我显示每一行时,我用颜色和样式标记它们,这样它在屏幕上视觉上更有意义,例如当它读取该行时在屏幕上显示为深蓝色。我希望这是有道理的,我会提供你想看的任何代码。

编辑 - 摘要只是给你范围,主要问题是如何在不执行 html 或 asp 经典代码的情况下将文本流作为文本拉入屏幕。混合一些 javascript 可能是一个好方法吗?我只是想可能有一种纯粹的 ASP 经典方法来处理读取文件等。

IF VALIDATED_PAGE <> "" THEN                                                                    

set fs=Server.CreateObject("Scripting.FileSystemObject")                                            'Create a File Object to access files
set fso = Server.CreateObject("Scripting.FilesystemObject")                                         'Create a File Object to access files
fs.CopyFile ASP_FILE_LOCATION,EDT_FILE_FORMAT_LOCATION
'Copy the ASP file we want to edit into a .EDT extension
set txt = fso.OpenTextFile(EDT_FILE_FORMAT_LOCATION)                                            'Set the Text from  to use this EDIT File 
LINECOUNT = 0                                                                                       'Set this to ZERO to do manual line number tracking must start at zero

do while txt.AtEndOfStream = false                                                                  'Do these thing while the text file is NOT End Of Stream (END)
    LINECOUNT = LINECOUNT + 1                                                                       'Increase the Line Count number as we go through the file
    Response.Write("<LABEL class='LINENUMBER'>LINE#" & LINECOUNT & "</label>")                      'Mark and display the line numbers  

    IF NOT txt.AtEndOfStream THEN 
        IF InStr(txt.Readline,"div_a1") >= 1 then 
            response.write "A1FOUND"
            NEWLINE = Replace(txt.Readline,"div_a1",("<label style='color:blue;'>" & txt.Readline & "</label>"))
            RESPONSE.WRITE NEWLINE
            DIV_A1 = 1
        END IF
    END IF
    

    IF NOT txt.AtEndOfStream = TRUE THEN Response.Write(txt.ReadLine & "<br>")                                                      'Write the current line to the screen
         
LOOP 
END IF
  1. LINE#1
  2. LINE#2
  3. LINE#3
  4. 第 4 行
  5. LINE#5
  6. LINE#6 div.css_grid{
  7. LINE#7 text-shadow:2px 2px 黑色;
  8. LINE#8 margin:0px;
  9. LINE#9}

查看前几行如何没有任何信息可显示,因为它们是 html header 代码和第 5 行的标记,但在 运行ning 之后的第 6 行<style> 命令然后显示它之后的文本,直到它到达 </style> 的第 10 行。也许这可以帮助您更多地了解我在说什么。

每当您需要在网络浏览器中将 HTML 显示为文本时,您需要先对其进行 HTML 编码,否则网络浏览器将解释并呈现 HTML 标签,而不是简单地将它们显示为纯文本。

您可以在经典 ASP 中使用方法

执行此操作
<%
Call Response.Write(Server.HTMLEncode(content))
%>

您需要在返回文件内容的任何 Response.Write 方法调用上使用 Server.HTMLEncode()


有用的链接

  • (显示经典 ASP 中 HTML 编码的示例)