2013-04-04 141 views
6

當然,這已經被問及之前已經被搜索過的解決方案,到目前爲止還沒有成功。我想通過使用htmlentitieshtmlspecialchars改變了TM符號和符號來其HTML equivelents:即使有參數,PHP htmlentities也無法正常工作

$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

+0

將display_errors設置爲1並將error_reporting設置爲E_ALL您可能會收到錯誤消息 – Halcyon 2013-04-04 15:51:17

+0

什麼版本的php – Prisoner 2013-04-04 15:51:17

+0

我查看了沒有列出的錯誤報告 – ToddN 2013-04-04 15:51:38

回答

2

你的代碼工作對我來說: - ?

manual page for htmlentities()我們可以看到:

返回值

返回編碼字符串。

如果輸入字符串中包含給定的編碼一個空字符串 中的無效編碼單元序列將被返回,除非是 ENT_IGNORE或ENT_SUBSTITUTE標誌被設置。

我的猜測是輸入數據沒有正確編碼爲UTF-8,並且函數返回一個空字符串。 (假設腳本不會崩潰,即代碼部分仍然運行後)。

+0

我想你是在做些什麼,讓我嘗試編碼,然後加入'htmlentities' – ToddN 2013-04-04 16:03:58

5

我不知道爲什麼,這個工作對我來說(ヶ輛對我來說被調用兩次)

$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;

+1

這很奇怪,因爲我必須基本調用htmlentities兩次才能對它進行編碼。爲什麼?這很奇怪,因爲我以前從來沒有遇到過這個問題,它無處可逃。 – 2013-07-14 08:54:30

3

我想我有同樣的問題,因爲Pjack(在8:54 7月14日的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; 

(I使用PHP/5.4.16從窗戶-7 XAMPP)獲得。

但是,經過一些更多的想法後,我發現瀏覽器顯示字符串& lt;和& gt;如>和<。 (請參閱瀏覽器中的源代碼)。第二次調用將&轉換爲&amp;,然後瀏覽器纔會顯示您期望的內容。

0

我幾乎有同樣的問題(其中每次都顯示相同的文本),並與不同的回聲的組合我得到它。似乎像firefox這樣的瀏覽器每次都顯示相同的文本。那是因爲當你在文字時,它被轉換回普通文本而回聲。當我使用變量/文本回顯一個腳本爲console.log ged時,它實際上正確地回顯了htmlentities文本(幾乎)。它不是用html代碼替換每一個特殊的字符,而是用我之前已經看到的其他代碼替換'em'(我不記得名字)。再次感謝它,我再次獲得相同的文本echo(記住它轉換所有內容),但在console.log-version中給出了預期的結果。現在,結果如下:
1.執行htmlentities兩次
2. 鴕鳥政策(與Firefox至少)回波的ヶ輛正常到網頁。如果您想檢查值是否確實正確,請回顯將其記錄到控制檯中的腳本。
我希望這可以幫助其他人同樣的問題,
VicStudio

編輯:3.如果您使用的是$_POST公式推,不要忘了添加accept-charset="UTF-8"(或其他字符集)到<form>標記。

更多編輯:只做2次htmlentities如果您希望將結果正常回顯到頁面中。如果你想直接發送f.e.一個數據庫,只做一次! - >我之前說過的話是完全錯誤的。 :(