在Ruby中编写HTTP服务器,我需要在浏览器中编辑一个使用某些源代码(HTML,JavaScript和Ruby)的文件。我需要将任何文本文件内容放在textarea的值中:
"<textarea>__CONTENT__</textarea>".gsub('__CONTENT__',File.read(filename))
但是,如果文件包含一些特殊的子标记,例如</textarea>
,则不起作用。所以我尝试通过在文件内容中进行某些替换来“准备”数据。但是,如果文件包含带有HTML / Ruby内容的源代码,则会出现问题,特别是如果我尝试发送HTTP服务器的源代码。这一系列替代品似乎很好:
File.read(__FILE__).gsub(/&/,"&").gsub('<',"&"+"lt;").gsub('>',"&"+"gt;")
然而,这还不够好。当文件包含\'
时,存在问题(在Web浏览器中)!是否有一种有用的技术可以在textarea(服务器端和/或浏览器端)中放置任何文本?
答案 0 :(得分:1)
CGI::escapeHTML将“准备”字符串为HTML安全。
# require 'cgi'
CGI::escapeHTML(File.read(__FILE__))
答案 1 :(得分:0)
这种形式很好: CGI :: escapeHTML(File.read(的文件))
除了反斜杠字符:双反斜杠变得简单。
我发现: 服务器端,用&amp; 99992;
替换反斜杠CGI::escapeHTML(File.read(@uri).gsub('\\','&9999'+'2222;'))
浏览器方面,替换textarea“&amp; 99992222;”用反斜杠字符:
var node=document.getElementById('textarea_1');
node.value=node.value.replace(/\&9{4,4}2{4,4};/g,String.fromCharCode(92));
跳出没有来源&amp; 99992222; !