我该怎么逃避?

时间:2011-10-18 09:12:33

标签: php html escaping

它是一个简单的记录器功能。我想将数组加载到DIV内容:

document.getElementById('layout').innerHTML = '<?php foreach ($logs as $item) { echo str_replace(array('"',"'"), array ('&quot;','&#039;'), $item).'<hr />'; } ?>';

因为$ logs可以包含HTML元素,但不包含引号,因为它们会破坏回显。它应该没问题,但Firefox说“畸形的Unicode字符序列”并没有显示。现在怎么样?

2 个答案:

答案 0 :(得分:1)

使用html entities将您的html代码翻译成安全顺序

答案 1 :(得分:0)

我可能错了,但看起来你正试图使用​​javascript将php代码输入你的页面。 Javascript是客户端,所以如果有的话,你将获得完整的代码,而不是解析的代码。

如果您希望事先运行php,那么页面中的实际代码将是一个包含已经解析过的内容的javascript,您需要创建一个包含完成内容的字符串并添加“'”让javascript理解它。

这可能看起来像这样(没有为你检查过foreach)

<?//this part is parsed before sending it to the client
   $conts = "'"; 
   foreach ($logs as $item) { 
        $conts .= str_replace(array('"',"'"), array ('&quot;','&#039;'), $item);
        $conts .= "<hr/>";
   }
   $conts .= "'";
?>
document.getElementById('layout').innerHTML = <? echo $conts ?>;