[英]PHP htmlentities not working even with parameters
當然,這之前已經被問過並已經尋找了解決方案,但迄今為止所有這些都沒有奏效。 我想通過使用htmlentities
或htmlspecialchars
將 TM 符號和 & 符號更改為它們的 html 等效項:
$TEST = "Kold Locker™ & other stuff";
echo "ORGINIAL: " . $TEST . "<BR/>";
echo "HTML: " . htmlentities($TEST, ENT_COMPAT, 'UTF-8');
這顯示:
ORGINIAL: Kold Locker™ & other stuff
HTML:
我也用htmlspecialchars
嘗試過它,第二個參數改變了相同的結果。
我錯過了其他人聲稱在其他解決方案中有效的東西?
更新:我嘗試只顯示utf8_encode($TEST)
並顯示HTML: Kold Locker™ & other stuff
我不知道為什么,這對我有用(必須為我調用 htmlentities 兩次)
$html="<html> <head><head>something like this </html>"
$entities_correction= htmlentities( $html, ENT_COMPAT, 'UTF-8');
echo htmlentities( $entities_correction, ENT_COMPAT, 'UTF-8');
輸出 :
<html> <head><head>something like this </html>
我以為我和 Pjack 有同樣的問題(7 月 14 日 8:54 的 msg):
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);
在瀏覽器(在我的情況下為 Firefox)中給出原始字符串 $str (沒有任何翻譯),而
echo htmlentities(htmlentities($str));
給出:
A 'quote' is <b>bold</b>
(我使用從 windows-7 XAMPP 獲得的 PHP/5.4.16)。
然而,經過一些思考,我發現瀏覽器顯示字符串 < 和 > 作為 > 和 <。 (查看瀏覽器中的源代碼)。 htmlentities 的第二次調用將 & 轉換為&
只有這樣,瀏覽器才會首先顯示您的預期。
你的代碼對我有用:-?
在htmlentities()
的手冊頁中,我們可以閱讀:
返回值
返回編碼的字符串。
如果輸入字符串在給定的編碼中包含無效的代碼單元序列,則將返回一個空字符串,除非設置了 ENT_IGNORE 或 ENT_SUBSTITUTE 標志。
我的猜測是輸入數據沒有正確編碼為 UTF-8,函數返回一個空字符串。 (假設腳本沒有崩潰,即該部分之后的代碼仍在運行。)
我遇到了幾乎相同的問題(不知何故,它每次都顯示相同的文本)並且結合了不同的 echo´si 得到了它。 似乎像 Firefox 這樣的網絡瀏覽器每次都顯示相同的文本。 那是因為當您echo
顯 htmlentities-text 時,它會在回顯時轉換回普通文本。 當我將帶有變量/文本的腳本回顯為console.log
,它實際上(幾乎)正確地回顯了 htmlentities 文本。 它沒有用 html 編碼替換每個特殊字符,而是用我以前見過的其他一些編碼替換 'em(我不記得名字了)。 Htmlentities-ing 再次,我再次得到相同的文本 echo´d(記住它會轉換所有內容),但是在 console.log-version 中回顯它給了我預期的結果。 現在,再次,結果:
1. 執行htmlentities
兩次!
2.不要(至少在 Firefox 中)像往常一樣將 htmlentities回顯到網頁中。 如果您想檢查該值是否確實正確,請回顯將其記錄到控制台的腳本。
我希望這可以幫助其他有同樣問題的人,
維克工作室
編輯: 3. 如果您使用的是$_POST
公式,請不要忘記將accept-charset="UTF-8"
(或其他一些字符集)添加到<form>
標記中。
甚至更多編輯:如果您希望將結果正常回顯到頁面中, htmlentities
執行 2 次htmlentities
。 如果您想直接發送 fe 數據庫,只需做一次! -> 我之前說的部分是錯誤的。 :(
這是一篇舊帖子,但對於仍在尋找解決方案的任何人,以下是我成功使用的方法:
echo html_entity_decode($htmlString);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.