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
か?