簡體   English   中英

在可內容編輯的div中處理HTML實體

[英]Handling HTML entities in contenteditable divs

我正在使用一個內容可編輯的<div>編輯電子郵件(特別是使用NicEdit )。 我希望能夠以某種形式提交消息正文,使用PHP處理它,並使用mail()函數(或PHPMailer )發送它。

我遇到的問題與特殊字符和編碼有關。 當在div中鍵入諸如πá這樣的特殊字符時,它保持不變,而不是轉換為&pi;這樣的html實體&pi; &aacute; 在某些情況下會對其進行轉換,例如<&lt;

因此,提交表單時,PHP接收的數據很難處理。 寫作

pi is "less than" 2 × pi:
π < 2π

將以下數據放入contenteditable div中

<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>

這就是PHP所收到的。 但是使用htmlentities()

&lt;div&gt;pi is &quot;less than&quot; 2 &times; pi:&lt;/div&gt;
&lt;div&gt;&pi; &lt; 2&pi;&lt;/div&gt;

除HTML標記外,這是正確的,因此此方法似乎無用。 最初接收到的數據可以插入數據庫(我認為)很好,但是當我嘗試將其作為電子郵件發送時,編碼混亂了。

從我的角度來看,解決方案似乎是對HTML標簽之外的實體進行編碼,以得到如下所示的內容:

<div>pi is &quot;less than&quot; 2 &times; pi:</div>
<div>&pi; &lt; 2&pi;</div>

但是從Google和StackOverflow進行搜索看來,這似乎是一件壞事。 因此,我認為我一定在某種程度上對編碼做錯了,無論是在發送電子郵件之前還是在發送帶有可編輯內容的原始數據之前。 我正在尋找一種可行的解決方案,理想情況下,它不需要像HTMLPurifier這樣的復雜庫。

有任何想法嗎?

編輯:我嘗試過此解決方案將特殊字符不在標記中時將其轉換為html實體。 當我嘗試輸入π類的特殊字符時,這似乎很好用。 但是來自該鏈接的答案已被否決, 類似的答案表示該方法從根本上是錯誤的。 誰能告訴我這是為什么,為什么我不應該堅持htmlentitiesOutsideHTMLTags

只是一個想法:

  • 步驟1 :將您的<div> <b></b> </div>為[div] [b] [/ b] [/ div]
  • 步驟2 :您的才能
  • 第3步 :將您的[div] [b] [/ b] [/ div]轉換為<div> <b> </b> </div>

順便說一句,我認為您可以在步驟1之前使用strip_tags()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM