-1

我有一个 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>&lArr;</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'] == "<(^_^<) Kirby!" 我得到 $array['message_body'] == "by!"。但是当 $lastMessage['message_body'] == "<(^_ Kirby!" 它被正确地存储到 $array['message_body'] 为 "<(^_ Kirby!"。不完全确定发生了什么。所有其他我试过的情况很好。

当我拿出它的工作原理&lArr. 我猜这与它有关。

4

2 回答 2

2

将 $lastMessage['message_body'] 包装在 htmlentities() 中,它应该可以解决您的问题。

$lastMessage['message_body'] = htmlentities($lastMessage['message_body']);
于 2013-01-11T20:22:06.687 回答
1

由于该字符串中包含 >,因此浏览器可能会将其视为 HTML 元素。要修复此$lastMessage['message_body']通过htmlentities()

htmlentities($lastMessage['message_body']);
于 2013-01-11T20:24:32.143 回答