字符串无法解析为HTML

时间:2015-06-15 08:22:40

标签: javascript php jquery html

我的PHP和Javascript文件有一个奇怪的问题。我的数据库中有HTML内容,我想将其插入到我的页面中。所以,我得到了值并将其传递给HTML页面,如下所示:

$string = preg_replace( "/\r|\n/", "", htmlentities($formcontent) );

我得到一个字符串,我可以用它将它传递给我的javascript,就像这样:

var contentform = '<?php echo $string; ?>';

现在我想将此HTML插入到我的页面中。我有一个div设置,但如果我插入它,它会被视为一个字符串,因此没有任何DOM可以显示。

var htmltrimmed = $.trim(contentform);

var htmlcontent = $.parseHTML(htmltrimmed);
console.log(htmltrimmed);
$('#currentform').html(htmltrimmed);

但是当我检查控制台检查实际div时,只插入一个普通字符串。:

string in html

您会看到它被视为字符串。但我真的不明白为什么它会像这样。

编辑:

这是contentform值,我已经删除了一些,因为字符串很长,但实际值是一个有效的HTML字符串!:

&lt;form class=&quot;form-horizontal&quot; &gt;&lt;fieldset&gt;&lt;!-- Form Name --&gt;&lt;legend&gt;DMN SGT&lt;/legend&gt;&lt;!-- Multiple Radios --&gt;&lt;div class=&quot;control-group&quot;&gt;  &lt;label class=&quot;control-label&quot; for=&quot;multipleradios-0&quot;&gt;Grund der Messebesuch&lt;/label&gt;  &lt;div class=&quot;controls&quot;&gt;    &lt;label class=&quot;radio&quot; for=&quot;multipleradios-0-0&quot;&gt;      &lt;input type=&quot;radio&quot; name=&quot;multipleradios-0&quot; id=&quot;multipleradios-0-0&quot; value=&quot;Konkretes Interesse an Produkt&quot; checked=&quot;checked&quot;&gt;

3 个答案:

答案 0 :(得分:2)

  

使用$.parseHTML作为示例

请参阅此示例:http://jsfiddle.net/kevalbhatt18/Lny2m0kc/1/

var t = $.parseHTML('&lt;form class=&quot;form-horizontal&quot; &gt;&lt;fieldset&gt;&lt;!-- Form Name --&gt;&lt;legend&gt;DMN SGT&lt;/legend&gt;&lt;!-- Multiple Radios --&gt;&lt;div class=&quot;control-group&quot;&gt;  &lt;label class=&quot;control-label&quot; for=&quot;multipleradios-0&quot;&gt;Grund der Messebesuch&lt;/label&gt;  &lt;div class=&quot;controls&quot;&gt;    &lt;label class=&quot;radio&quot; for=&quot;multipleradios-0-0&quot;&gt;      &lt;input type=&quot;radio&quot; name=&quot;multipleradios-0&quot; id=&quot;multipleradios-0-0&quot; value=&quot;Konkretes Interesse an Produkt&quot; checked=&quot;checked&quot;&gt;')
console.log(t);

$('#test').html(t[0].data)

答案 1 :(得分:1)

问题是因为您从PHP回显的字符串中的HTML被编码。没有本地JS函数来解码HTML,因此您需要提供自己的功能,如下所示:

function htmlDecode(value){
    return String(value)
        .replace(/&quot;/g, '"')
        .replace(/&#39;/g, "'")
        .replace(/&lt;/g, '<')
        .replace(/&gt;/g, '>')
        .replace(/&amp;/g, '&');
}

$('#currentform').html(htmlDecode(contentform));

Example fiddle

答案 2 :(得分:1)

请尝试使用html_entity_decode代替htmlentities

$string = preg_replace( "/\r|\n/", "", html_entity_decode($formcontent) );