Как предотвратить запись html-кода в "базу данных"?

Принцип работы моего кода следующий: если во входной строке есть такие смайлики (":)", ":("), то их нужно заменить картинками. Вот как я это делаю:

$smile = array(":)", ":(");
$grafic = array("<img src = './image/Smile.png' alt='Smile' align='middle'>",
    "<img src = './image/Sad.png' alt='Smile' align='middle'>");    
$new_message = str_replace($smile, $grafic, $message);

$file = "../data/messages.json";
$json_content = json_decode(file_get_contents($file), true);

if (!empty($new_message)) {
    $json_content[] = array("time" => $time, "user" => $user, "message"  => $new_message);
    file_put_contents($file, json_encode($json_content, JSON_PRETTY_PRINT));
}

Но тогда я должен записать уже измененную строку, которую я пишу в "базе данных" (json файл) и там мы можем видеть следующее:

[
    {
        "time": "1499985376",
        "user": "Max",
        "message": "Hello <img src = '.\/image\/Smile.png' alt='Smile' align='middle'>"
    }
]

Как я могу написать слово "улыбка" или "грустно" вместо HTML теги?

1 ответ

  1. Просто создайте новую переменную и сохраните сообщение перед внесением изменений, например: $rawMessage = $message;,
  2. Затем используйте $rawMessage сохранить сообщение в базе данных.
Другие вопросы по тегам