PHP-将非ASCII字符转换为不带mbstring的十六进制实体

PHP-将非ASCII字符转换为不带mbstring的十六进制实体,php,unicode,html-entities,Php,Unicode,Html Entities,我想将任何Unicode字符串转换为十六进制HTML实体,ASCII字符除外。所以像这样的字符串: 文本在这里。这是だ 这是ã。 转换为 文本在这里。这是12384和227。 作为参考,这个问题有一个将所有字符转换为数字实体的函数,但它需要mbstring,我不能使用它(我也不能使用任何超过PHP5.3.10的特性) 这不是我的代码 我使用“php将unicode转换为html”进行了一次简单的Google检查,结果发现: 其中有: function unicode_escape_sequen

我想将任何Unicode字符串转换为十六进制HTML实体,ASCII字符除外。所以像这样的字符串:

文本在这里。这是だ 这是ã。

转换为

文本在这里。这是12384和227。

作为参考,这个问题有一个将所有字符转换为数字实体的函数,但它需要mbstring,我不能使用它(我也不能使用任何超过PHP5.3.10的特性)

这不是我的代码

我使用“php将unicode转换为html”进行了一次简单的Google检查,结果发现:

其中有:

function unicode_escape_sequences($str)
{
 $working = json_encode($str);
 $working = preg_replace('/\\\u([0-9a-z]{4})/', '&#x$1;', $working);
 return json_decode($working);
}
该网页上还有许多其他示例,但这一个看起来像您要查找的内容。

这不是我的代码

我使用“php将unicode转换为html”进行了一次简单的Google检查,结果发现:

其中有:

function unicode_escape_sequences($str)
{
 $working = json_encode($str);
 $working = preg_replace('/\\\u([0-9a-z]{4})/', '&#x$1;', $working);
 return json_decode($working);
}

那个网页上还有很多其他的例子,但这一个看起来像你要找的。

奇怪的是,这似乎对我不起作用。它在
json\u encode
处失败,我从这里得到
json\u错误\u UTF8
错误:我不知道为什么;我在这个沙箱中对它进行了测试,
json\u encode
似乎可以工作:没关系,我只是混淆了一些变量名。这管用!谢谢注(a)
json_encode
还将在引号、换行符等中添加反斜杠(b)对于基本多语言平面之外的字符,此操作失败,因为它们将作为两个代理
\u
序列出现,其中HTML使用一个字符引用。此函数将字符串转换为十六进制实体,因此不会回答此询问数字实体的问题。此人的原始请求如下:“我想将任何Unicode字符串转换为十六进制HTML实体,ASCII字符除外。”注意,他说的是十六进制。这里的问题是,你不能很容易地将两者(ASCII和十六进制)混合使用,因为所有函数都处理整个字符串。因此,所有字符串都是十六进制或其他形式。如果他想这样做,我建议:使用PHP中的ICONV()函数加上”ResourceBundle::getLocales()“功能,以便他可以将它们转换为适合他/她的任何语言环境。:-)奇怪的是,这似乎对我不起作用。它在
json\u encode
处失败,我从这里得到
json\u错误\u UTF8
错误:我不知道为什么;我在这个沙箱中对它进行了测试,
json\u encode
似乎可以工作:没关系,我只是混淆了一些变量名。这管用!谢谢注(a)
json_encode
还将在引号、换行符等中添加反斜杠(b)对于基本多语言平面之外的字符,此操作失败,因为它们将作为两个代理
\u
序列出现,其中HTML使用一个字符引用。此函数将字符串转换为十六进制实体,因此不会回答此询问数字实体的问题。此人的原始请求如下:“我想将任何Unicode字符串转换为十六进制HTML实体,ASCII字符除外。”注意,他说的是十六进制。这里的问题是,你不能很容易地将两者(ASCII和十六进制)混合使用,因为所有函数都处理整个字符串。因此,所有字符串都是十六进制或其他形式。如果他想这样做,我建议:使用PHP中的ICONV()函数加上”ResourceBundle::getLocales()“函数,以便他可以将它们转换为对他/她有效的任何语言环境。:-)