将HTML转换为有效字符串

时间:2016-08-11 13:36:38

标签: javascript php jquery html zend-framework

我目前有一个使用Zend Framework的PHP项目。当用户单击按钮时,我使用partial来获取需要添加到页面的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,这是它评估的内容:

error from html

2 个答案:

答案 0 :(得分:3)

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

<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)。

答案 1 :(得分:0)

尝试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°°¦§>