10

我有以下代码:

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

我需要一个替代代码,它完全一样但不使用任何 mb_* 函数(mb 扩展在某些环境中不可用)。

我以为

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

应该完全一样,但不幸的是它没有。

4

1 回答 1

23

我玩了一会儿,发现这很有趣。似乎第二部分也运行“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

于 2012-08-15T22:41:24.463 回答