-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'] == "<(^_^<) カービィ!" の場合 $array['message_body'] == "by!" を取得します。しかし、$lastMessage['message_body'] == "<(^_ Kirby!" の場合、"<(^_ Kirby!" として正しく $array['message_body'] に格納されます。何が起こっているのか完全にはわかりません。他のすべて私が試したケースはうまくいきます。

取り出すと効きます&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 に答える