Laut allen drei Antworten auf die entsprechende Frage auf StackOverflow, soll man hierfür TinyMCE nehmen. (Quelle)
Dieser verwandelt den editierten Text in HTML/CSS-durchwirkten Text, welcher in einer Datenbank gespeichert werden kann.
Bilder können ebenfalls integriert (und sogar im geringen Umfang editiert) werden. (Quelle)
Hier der 4-schrittige Quickstart. Ein davon erweitertes umfangreicheres Codebeispiel, wo man den in HTML-umgewandelten Text auch wirklich sieht:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
selector: '#mail_text'
});
</script>
</head>
<body>
<h1>TinyMCE Quick Start Guide</h1>
<?php
if (isset($_POST["mail_text"])) echo 'Hello ' . htmlspecialchars($_POST["mail_text"]) . '!';
?>
<form method="post">
<textarea id="mail_text" name="mail_text">World</textarea>
<button type="submit">Senden</button>
</form>
</body>
</html>