我想在HTML页面中显示异常跟踪.
一种方法是在异常跟踪中转义HTML特殊字符并将其转储到<pre>标记内.
虽然它有效,但效率非常低.我认为一种方法是用CDATA包裹跟踪.我试过了,但没有显示出来.
我的问题,这可以吗?
这是我的微弱尝试.
  <pre><![CDATA[blah, blah, blah with <>
  and blah blah blah with &
    and more blah, blah]]></pre>
bob*_*nce 10
只有当你以XML(application/xhtml+xml)的形式提供页面时它才会起作用; 纯HTML中没有CDATA部分.HTML模式下的大多数浏览器都会忽略示例CDATA部分.
无论如何,围绕一个字符串扔<![CDATA[... ]]>不足以包裹它.如果您的跟踪信息中包含序列]]>,则结束CDATA部分,您将回到相同的问题.所以你必须至少做一次逃脱来应对这种情况,如果你要做一个逃避过程,你也可以做一个正确的HTML逃脱.
这就是CDATA部分毫无意义的原因.很多人似乎认为它在某种程度上贬低了他们考虑逃避问题,但事实并非如此.
无论如何,HTML转义并不是低效的.这是几个字符串替换.任何Web应用程序(*)都会在每个页面上进行一百次HTML转义.再添加一个 - 特别是对于效率根本不重要的调试案例! - 没有很大的负担.
(*:好吧,除了来自PHP教程的写得不好的应用程序,其作者从未听说过htmlspecialchars,显然.)