2015-09-06 24 views
0

所以我有輕微的問題。我正在開發的PHP程序允許網頁設計師有時會發布一些代碼,並將其放入後端數據庫。有時設計師可能也想討論html實體。在textarea中使用htmlentities轉義HTML,但回到數據庫的HTML

所以我們可以說設計師增加了一行代碼數據庫是這樣的:

<p>hellos friend</p> 

所以我用PDO堅持在數據庫中此行沒有逃脫它,一切都很好,它顯示了良好的。現在,我想的網頁設計師能夠編輯這一點,所以當我拉出來的數據庫我使用這個代碼後:

$post = htmlentities($post); 

現在是很好的,我可以插入到這一點我的編輯:

<textarea>$post</textarea> 

但是我們有問題,因爲這傢伙編輯該代碼,他提交併返回到數據庫中,現在它得到了HTML實體,具有& LT;而不是<和& gt;代替>(這是很難在SA鍵入這一點,重新編碼它)

&lt;p&gt;hellos friend&lt;/p&gt; 

所以現在它是錯的數據庫中,所以當我再次顯示它,它顯示的實體。

所以也許我可以編輯它,並重新添加的所有實體,如果有這樣的事情後運行的ヶ輛相反的,但帶來了另一個問題:

如果一個網頁設計師告訴什麼其他人「嗨,夥計,這是一個HTML實體是什麼,它是類型化這樣的:&LT;你應該使用它」

然後就是會變成卡住回不一個實體,你明白我的意思嗎?有沒有解決方案?

回答

1

我認爲您正在尋找html_entity_decode()功能。這與htmlentities()相反。它爲lt回&轉換成<

http://php.net/manual/en/function.html-entity-decode.php

因爲你需要有設計逃脫HTML實體某種程度上你的第二個問題。我不認爲PHP有​​辦法擺脫它們,但我可能是錯的。這可能是你必須自己實現的東西,就像設計師在實體前面放置了一個\,以便將它與假設轉換爲HTML的實體區分開來,然後解析輸入以查找轉義實體。