在ColdFusion中,我正在创建并保存文件,然后循环遍历文件中的字符以显示其中的一部分。这几乎正常,但循环有时会插入格式而不仅仅是输出的字符。有时它正在失去格式。以下是原始版本和版本:
代码:
<cfset colvalue = getPageContext().getRequest().getParameterValues('#col#')>
<cfset repa = colvalue[1]>
<cfloop file="#reppath#moxrep/#repa#.cfm" index="chunk" characters="500">
<cfoutput>#chunk#</cfoutput><br>
</cfloop>
我在代码中做错了吗? ColdFusion循环文件中是否有错误?如果是这样,是否有解决方法?
答案 0 :(得分:1)
<cfloop .. characters="500">
这是因为你的循环使用&#34;字符&#34;属性,限制字符数"..read during each iteration of the loop.."。这对于文本文件来说没问题。但是,由于文件内容是HTML,因此当您尝试将<br>
插入任意位置时,它会中断。这会导致部分HTML代码显示而不是呈现。例如:
<div <br> style="text-align: left; ">This will not render correctly</div>
那就是说,为什么要逐行阅读内容而不只是显示整个文件呢?
<强>更新强>
你真的无法用基本的字符串函数或正则表达式解析HTML - 没有任何可靠性。遇到新行字符并不一定意味着您已到达特定HTML代码块的末尾。对于跨越多行的HTML元素,它是完全有效的。另外,HTML元素经常嵌套。因此几乎不可能确定&#34;逻辑&#34;端点使用字符串函数(基本上就是cfloop正在做的事情)。
相反,我建议using a tool like JSOUP专为解析HTML而设计。解析完文档后,可以非常轻松地访问HTML的特定元素或部分。