我在一个相当简单的报价系统中使用了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
第二次编辑:
GREEK字母似乎有问题吗?有什么建议吗?
答案 0 :(得分:0)
你应该使用htmlspecialchars()。使用适当的选项将使您的字符串成为有效的HTML。 json_encode是从PHP值获取json字符串。你正在使用它与字符串,所以实际上你不希望有json。特别是我不明白为什么你用它与post_id。