我在mysql-database中有这个文本:
您好
你好吗?
工作(php):
echo $row['text'];
现在正在工作:
<script>
test = "<?php echo $comment; ?>";
document.writeln(test.parseURL().parseUsername().parseHashtag());
</script>
错误没有打印。
javascript函数:
<script>
String.prototype.parseURL = function() {
return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.=]+/g, function(url) {
return url.link(url);
});
};
String.prototype.parseUsername = function() {
return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
var username = u.replace("@","")
return u.link("http://url.com/"+username);
});
};
String.prototype.parseHashtag = function() {
return this.replace(/[#]+[A-Ö–a-ö0-9-_]+/g, function(t) {
var tag = t.replace("#","")
return t.link("/?p=tagga&q="+tag);
});
};
</script>
但是如果我没有换行就可以了,所以它有效 嗨!你好吗?
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
始终查看渲染的输出。在这种情况下:
test = "Hi
how are you?";
这显然是无效的(未终止的字符串常量)。
将PHP变量转储到JS时,总是使用json_encode
。
test = <?=json_encode($row['text'])?>;
输出:
test = "Hi\nhow are you?";
答案 1 :(得分:0)
Javascript文字多行字符串与PHP中的多行字符串完全不同。要么逃避换行,要么......
var text = 'Hi \
how are you?'
或者使它成为一行,例如
var text = 'Hi\nHow are you?';