使用HTML-ENTITIES字符集替代mb_convert_encoding

Sim*_*mon 10 php string character-encoding

我有以下代码:

mb_convert_encoding($string, 'HTML-ENTITIES', 'utf-8');
Run Code Online (Sandbox Code Playgroud)

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

我以为

utf8_decode(htmlentities($string, ENT_COMPAT, 'utf-8'));
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*ack 22

我玩了一下,发现这非常有趣.似乎第二部分也运行"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)));
Run Code Online (Sandbox Code Playgroud)

这里是上面代码的演示:http: //sandbox.onlinephpfunctions.com/code/715acade3b8337d9c9e48e58deee2a237015c259

这里有一个没有htmlspecialchars_decode的演示来显示你的问题:http: //sandbox.onlinephpfunctions.com/code/5c4a32bf99aa8fd6246c4a77132a023d32945363

  • 谢谢,你拯救了我的一天!这与 DOMDocument 配合得很好:) (2认同)
  • `utf8_decode()` 也已被弃用 (2认同)