簡體   English   中英

PHP htmlentities 即使使用參數也不起作用

[英]PHP htmlentities not working even with parameters

當然,這之前已經被問過並已經尋找了解決方案,但迄今為止所有這些都沒有奏效。 我想通過使用htmlentitieshtmlspecialchars將 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');

輸出 :

&lt;html&gt; &lt;head&gt;&lt;head&gt;something like this &lt;/html&gt;

我以為我和 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 &lt;b&gt;bold&lt;/b&gt; 

(我使用從 windows-7 XAMPP 獲得的 PHP/5.4.16)。

然而,經過一些思考,我發現瀏覽器顯示字符串 &lt; 和 &gt; 作為 > 和 <。 (查看瀏覽器中的源代碼)。 htmlentities 的第二次調用將 & 轉換為&amp; 只有這樣,瀏覽器才會首先顯示您的預期。

你的代碼對我有用:-?

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.

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