我在一个相当简单的报价系统中使用json_encode函数:
<script type='text/javascript'>
postQuote[<?php echo json_encode($post['post_id']); ?>] = <?php echo json_encode($post['post_text']); ?>
</script>
哪个输出:
postQuote["11241"] = "&Kappa;&alpha;&lambda;&eta;&sigma;&pi;'u03ad&rho;&alpha; &alpha;&lambda;'u03ac&nu;&iota;&alpha; &mu;&omicron;&upsilon;. 'u0388&chi;&omega; &kappa;'u03ac&pi;&omicron;&iota;&epsilon;&sigmaf; &alpha;&pi;&omicron;&rho;'u03af&epsilon;&sigmaf;. 'r'n1&omicron;&nu;: &Eta; &pi;&rho;'u03ac&sigma;&iota;&nu;&epsilon;&sigmaf; &delta;&iota;&alpha;&phi;&eta;&mu;'u03af&sigma;&epsilon;&iota;&sigmaf; &mu;&omicron;&upsilon; &delta;'u03af&nu;&omicron;&upsilon;&nu; $0.01; &Alpha;&nu; &nu;&alpha;&iota; &tau;'u03cc&tau;&epsilon; &mu;'u03ac&lambda;&lambda;&omicron;&nu; 'u03ad&chi;&omega; &pi;&rho;'u03cc&beta;&lambda;&eta;&mu;&alpha; &gamma;&iota;&alpha;&tau;'u03af &epsilon;'u03af&chi;&alpha; $0.60 &pi;'u03ac&tau;&eta;&sigma;&alpha; &kappa;&alpha;&iota; &tau;&eta;&sigmaf; 4 &pi;&rho;'u03ac&sigma;&iota;&nu;&epsilon;&sigmaf; &kappa;&alpha;&iota; &pi;'u03ae&gamma;&alpha; &mu;'u03cc&nu;&omicron; $0.062.'r'n2&omicron;&nu;: 'u03ad&chi;&omega; 5 rented ref. &Tau;'u03ce&rho;&alpha; &mu;&pi;&omicron;&rho;'u03ce &nu;&alpha; &alpha;&gamma;&omicron;&rho;'u03ac&sigma;&omega; 'u03ac&lambda;&lambda;&omicron;&upsilon;&sigmaf; 3 &mu;&epsilon; $0.6 &lambda;'u03ad&tau;&epsilon; &nu;&alpha; &tau;&omicron;&upsilon;&sigmaf; &alpha;&gamma;&omicron;&rho;'u03ac&sigma;&omega; &eta; &nu;&alpha; &pi;'u03ac&omega; $1 &kappa;&alpha;&iota; &nu;&alpha; &pi;'u03ac&rho;&omega; 'u03ac&lambda;&lambda;&omicron;&upsilon;&sigmaf; 5;'r'n'r'n&Alpha;&upsilon;&tau;'u03ac &pi;&rho;&omicron;&sigmaf; &tau;&omicron; &pi;&alpha;&rho;'u03cc&nu;."
以上文本为(希腊语):
Καλησπέρα αλάνια μου. Έχω κάποιες απορίες.
1ον: Η πράσινες διαφημίσεις μου δίνουν $0.01; Αν ναι τότε μάλλον έχω πρόβλημα γιατί είχα $0.60 πάτησα και της 4 πράσινες και πήγα μόνο $0.062.
2ον: έχω 5 rented ref. Τώρα μπορώ να αγοράσω άλλους 3 με $0.6 λέτε να τους αγοράσω η να πάω $1 και να πάρω άλλους 5;
Αυτά προς το παρόν.
现在,据我所知,它将字符串编码为HTML字符。因此,在我输出它之前,我会:
$(".quote").click(function() {
$("#text").val($("<div>").html("[quote]" + postQuote[$(this).attr('name')] + "[/quote]").text());
});
这无济于事。输出仍然与上面相同。
我做错了什么?
编辑:
$s = $dbh->prepare("
SELECT t.*, c.forum_name,
(SELECT count(*) FROM forum_posts WHERE topic_id=t.topic_id AND post_deleted=0) as posts
FROM forum_topics t
JOIN forum_cats c on c.forum_id = t.forum_id
WHERE t.topic_id=:id
");
$s->bindParam(':id', $id);
$s->execute();
$q = $s->fetch(PDO::FETCH_ASSOC);
while ($post = $p->fetch(PDO::FETCH_ASSOC)) {
//Postquote inside here.
}
我的表forum_posts
是utf8_general_ci
第二次编辑:
希腊字母好像有问题?有什么建议吗?
您应该使用htmlspecialchar()。这与适当的选项将使您的字符串成为有效的HTML。json_encode是从PHP值中获取json字符串。您将其与字符串一起使用,因此实际上您不希望使用json。特别是我不明白你为什么要把它和post_id一起使用。