2012-08-15 21 views
8

我有以下代碼:替代與HTML的實體mb_convert_encoding字符集

mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8'); 

我需要有一個替代代碼不完全一樣,但不使用任何MB_ *職能(MB擴展不在某些環境中可用)。

我認爲

utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8')); 

應該做的完全一樣的,但遺憾的是它沒有。

回答

20

我玩了一下,發現這很有趣。看起來第二部分也運行「htmlspecialchars」。必須是mb_convert_encoding中的一些錯誤,因爲htmlentities運行不正確。

如果您對結果運行htmlspecialchars_decode,則會得到與使用mb_convert_encoding完全相同的結果。

代碼:

$string = 'Test:!"$%&/()=ÖÄÜöäü<<'; 
echo mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8')."\n\n"; 
echo htmlspecialchars_decode(utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8', false))); 

這裏上面的代碼的演示: http://sandbox.onlinephpfunctions.com/code/715acade3b8337d9c9e48e58deee2a237015c259

這裏沒有htmlspecialchars_decode演示,展現您的問題: http://sandbox.onlinephpfunctions.com/code/5c4a32bf99aa8fd6246c4a77132a023d32945363

+0

絕對是偉大的 - 非常感謝很多! – Simon 2012-08-16 21:00:18

+0

謝謝,你救了我的一天!這適用於DOMDocument :) – 2017-04-18 18:43:44