繁体   English   中英

如何将 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");

但是htmlentities不能把所有的unicode都转成html个实体。 所以它只是给了我与输入相同的 output:

★ 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 ★

Ideone演示

这个更好

html_entity_decode('zł');

output - 兹罗提

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM