我有一个foreach循环,可以在用户的收件箱中显示所有“已读邮件”:
foreach ($tmpArray as $array) {
if ($array['message_parent_id'] == 0) {
$convo = $this->model->getConvoArray($array['message_id']);
$array['message_datetime'] = $convo[sizeof($convo) - 1]['message_datetime'];
$lastMessage = $this->model->getLastReply($array['message_id']);
if ($_SESSION['username'] == $lastMessage['message_sender']) {
$messageBody = "<b>⇐</b> " . $lastMessage['message_body'];
} else {
$messageBody = $lastMessage['message_body'];
}
$array['message_body'] = $messageBody;
}
array_push($readMail, $array);
//echo PrettyDate::convert($array['message_datetime']);
//echo "<br />";
}
然而,当$ lastMessage ['message_body'] ==“&lt;(^ _ ^&lt;)Kirby!”我得到$ array ['message_body'] ==“by!”。但是当$ lastMessage ['message_body'] ==“&lt;(^ _ Kirby!”它正确存储在$ array ['message_body']中作为“&lt;(^ _ Kirby!”。不完全确定发生了什么。我试过的所有其他案例都很好。
当我拿出 围绕&amp; lArr时,它会起作用。我猜它与此有关。
答案 0 :(得分:2)
在htmlentities()中包装$ lastMessage [&#39; message_body&#39;],它应该可以解决您的问题。
$lastMessage['message_body'] = htmlentities($lastMessage['message_body']);
答案 1 :(得分:1)
由于此字符串具有&gt;在其中,浏览器可以将其视为HTML元素。要修复此通行证$lastMessage['message_body']
到htmlentities()
:
htmlentities($lastMessage['message_body']);