如何将 Unicode 特殊字符转换为 html 个实体?
How do I convert Unicode special characters to html entities?
我有以下字符串:
$string = "★ This is some text ★";
我想将其转换为 html 个实体:
$string = "★ This is some text ★";
每个人都在写的解决方案:
htmlentities("★ This is some text ★", "UTF-8");
但是 html 实体无法将所有 unicode 转换为 html 实体。所以它只给我与输入相同的输出:
★ This is some text ★
我还尝试将此解决方案与以下两者结合使用:
header('Content-Type: text/plain; charset=utf-8');
和:
mb_convert_encoding();
但这要么打印出空结果,要么根本不转换,要么错误地将星星转换为:
Â
如何将 ★ 和所有其他 unicode 字符转换为正确的 html 实体?
htmlentities
在这种情况下不起作用,但您可以尝试 UCS-4
对字符串进行编码,例如:
$string = "★ This is some text ★";
$entity = preg_replace_callback('/[\x{80}-\x{10FFFF}]/u', function ($m) {
$char = current($m);
$utf = iconv('UTF-8', 'UCS-4', $char);
return sprintf("&#x%s;", ltrim(strtoupper(bin2hex($utf)), "0"));
}, $string);
echo $entity;
★ This is some text ★
我有以下字符串:
$string = "★ This is some text ★";
我想将其转换为 html 个实体:
$string = "★ This is some text ★";
每个人都在写的解决方案:
htmlentities("★ This is some text ★", "UTF-8");
但是 html 实体无法将所有 unicode 转换为 html 实体。所以它只给我与输入相同的输出:
★ This is some text ★
我还尝试将此解决方案与以下两者结合使用:
header('Content-Type: text/plain; charset=utf-8');
和:
mb_convert_encoding();
但这要么打印出空结果,要么根本不转换,要么错误地将星星转换为:
Â
如何将 ★ 和所有其他 unicode 字符转换为正确的 html 实体?
htmlentities
在这种情况下不起作用,但您可以尝试 UCS-4
对字符串进行编码,例如:
$string = "★ This is some text ★";
$entity = preg_replace_callback('/[\x{80}-\x{10FFFF}]/u', function ($m) {
$char = current($m);
$utf = iconv('UTF-8', 'UCS-4', $char);
return sprintf("&#x%s;", ltrim(strtoupper(bin2hex($utf)), "0"));
}, $string);
echo $entity;
★ This is some text ★