contenteditable<div>を使用して電子メール メッセージを編集しています (具体的にはNicEditを使用)。mail()メッセージ本文をフォームで送信し、PHP で処理し、関数 (またはPHPMailer )を使用して送信できるようにしたいと考えています。
私が抱えている問題は、特殊文字とエンコーディングに関係しています。πorなどの特殊文字をdiv に入力すると、 oráのような html エンティティに変換される代わりに変更されません。のように変換される場合もあります。πá<<
そのため、フォームが送信されたときに、PHP が受け取ったデータを処理するのは困難です。書き込み
pi is "less than" 2 × pi:
π < 2π
次のデータを contenteditable div に入れます
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
これは PHP が受け取るものです。しかし、使用htmlentities()すると
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
これは HTML タグ以外は正しいので、この方法は役に立たないように見えます。最初に受信したデータは、データベースに挿入するのには問題ありませんが (私はそう思います)、電子メールとして送信しようとすると、エンコーディングが台無しになります。
私の観点からは、HTML タグの外側にあるエンティティをエンコードして、次のようなものを取得することが解決策のようです。
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
しかし、Google と StackOverflow で検索すると、これは悪いことのようです。したがって、電子メールを送信する直前であろうと、元の contenteditable データで返送されようと、ある時点でエンコーディングに何か問題があるに違いないと思います。理想的には HTMLPurifier のような複雑なライブラリがなくても機能するソリューションを探しています。
何か案は?
編集:タグに含まれていない特殊文字をhtmlエンティティに変換するために、このソリューションを試しました。のような特殊文字を入力しようとすると、これはうまくいくようπです。しかし、そのリンクからの回答は反対票を投じられており、同様の回答は、アプローチが根本的に間違っていると述べています. これがなぜなのか、なぜ私が固執すべきではないのか、誰か教えてもらえますhtmlentitiesOutsideHTMLTagsか?