JS编码HTML标签不起作用

时间:2014-05-10 16:22:11

标签: javascript php html encoding

我正在构建一个小应用程序,它将接收用户HTML输入并将其转换为PHP电子邮件的人类可读格式。

示例
输入:

<html>
  <a href="file.ext">file</a>
</html>

我希望它以文本格式出现:

<?php
  $message = "<html>"
  . "<a href='file.ext'>file</a>"
  . "</html>";
?>

我已经掌握了语法和所有工作,但我的问题是HTML标记。即使我认为它们被编码(\x3C\x3E),它们仍然显示为HTML - 所以我得到链接而不是文本输出。我还尝试了&gt;&lt;。引号(\x22 / \x27)有效。

我的JS(使用jQuery):

function convert() {
$("#result").html("&lt;?php<br/>$message = ");
var text = $("#html").val();
text = text.split("\n");
$("#html").val("");
for(var i=0; i<text.length; i++) {
    text[i].replace("'","\x27");
    text[i].replace('"',"\x27");
    text[i].replace("<","\x3C");
    text[i].replace(">","\x3E");
    if(i<(text.length-1)) {
        if(i==0) {
            var line = "\x22"+text[i]+"\x22";
            $("#result").append(line+"<br/>");
        }
        else {
            var line = ". \x22"+text[i]+"\x22";
            $("#result").append(line+"<br/>");
        }
    }
    else {
        var line = ". \x22"+text[i]+"\x22";
        $("#result").append(line+";<br/>?>");
    }
}
}

有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:2)

这可能是因为你正在使用&#34;追加&#34;它将HTML字符串作为参数并将其作为元素添加到DOM中。

您是否尝试使用text()替换append()?我尝试使用带有文本方法的HTML字符串,它在我的最终工作正常。

注意使用这两种方法时的区别:

var line = '<a href="#">foobar</a>';

// string
$('#result').text(line+"<br/>");

// OR string with the element's prior text value
var str = $('#result').text();
$('#result').text(str + line + "<br/>");

// element
$('#result').append(line+"<br/>");

希望有所帮助。