将 HTML 转换为有效字符串

Converting HTML to Valid String

我目前有一个使用 Zend Framework 的 PHP 项目。当用户单击一个按钮时,我使用部分来获取需要添加到页面的 HTML。问题是 HTML 似乎返回为 HTML 而不是字符串:

document.getElementById("active_projects").innerHTML='<?php echo $this->partial("project/project/activeprojectstable.phtml", array(
    "headers" => $headers, 
    "active" => $this->active
                        
))?>';

.innerHTML = 接受一个字符串,但是 HTML 有它不接受的新行和特殊字符。如何将 HTML 转换为有效的 HTML 字符串?


更新:

为了更好地了解导致问题的部分所产生的 HTML,这是它的评估结果:

尝试 html_entity_decode:http://www.w3schools.com/php/func_string_html_entity_decode.asp

<?php
$str = "&lt;&copy; W3S&ccedil;h&deg;&deg;&brvbar;&sect;&gt;";
 echo html_entity_decode($str);
 ?>

上述代码的 HTML 输出将是(查看源代码):

<!DOCTYPE html>
<html>
<body>
<© W3Sçh°°¦§>
</body>
</html> 

以上代码的浏览器输出将是:

<© W3Sçh°°¦§>

尝试使用 type="text/template" 将您的部分封装到 script 标签中。浏览器不会理解它是什么类型的脚本,因此不会执行它。尽管如此,您仍然可以访问其内容,即使它们是多行的。

<script type="text/template" id="active_projects_template">
  <?php echo $this->partial("project/project/activeprojectstable.phtml", array(
    "headers" => $headers, 
    "active" => $this->active
  ))?>
</script>

<script type="text/javascript">
  // ...
  document.getElementById("active_projects").innerHTML=document.getElementById("active_projects_template").innerHTML;
  // ...
</script>

AngularJS 中的模板正在使用类似的模式(type 设置为 text/ng-template)。