php - 将 html 实体转换为 UTF-8,但保留现有的 UTF-8

标签 php utf-8 html-entities mb-convert-encoding

我想将 html 实体转换为 UTF-8,但是 mb_convert_encoding 破坏了已经 UTF-8 编码的字符。正确的做法是什么?

$text = "äöü ä ö ü ß";
var_dump(mb_convert_encoding($text, 'UTF-8', 'HTML-ENTITIES'));
// string(24) "äöü ä ö ü ß"

最佳答案

mb_convert_encoding() 不是您想要实现的正确功能:您真的应该使用 html_entity_decode()相反,因为它只会将实际的 html 实体转换为 UTF-8,而不会影响字符串中现有的 UTF-8 字符。

$text = "äöü ä ö ü ß";
var_dump(html_entity_decode($text, ENT_COMPAT | ENT_HTML401, 'UTF-8'));

给出

string(18) "äöü ä ö ü ß"

Demo

关于php - 将 html 实体转换为 UTF-8,但保留现有的 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338277/

相关文章:

objective-c - RTFString 包含 NSASCIIStringEncoding 特殊字符?

php - PHP中的htmlentities但保留html标签

asp.net - Html 实体名称与实体编号?

php - 如何查找数组中值的行号?

php - 如何按类别区分搜索结果? MySQL+PHP

php - Laravel每个路由组的自定义ModelNotFoundException处理

php - 字符编码错误,无法通过 PHP 从 MySQL 写入有效的 XML

javascript - 上传到服务器时出现 404 错误 codeigniter

android - File.listFiles() 因无效的 UTF-8 字符而崩溃

javascript - 通过 JavaScript 在 HTML 中正确编码变体选择器