php - 获取 html 实体的十六进制代码

标签 php flash unicode hex

我有一个字符串“”。

我想将它转换为十六进制以获得 "\u20AC" 的值,以便我可以将它发送到闪存。

所有货币符号都一样..

 £  ->  \u00A3
 $ ->  \u0024
 etc

最佳答案

首先,请注意 $ 不是 known entity in HTML 4.01 .但是,在 HTML 5 中,在 PHP 5.4 中,您可以使用 ENT_QUOTES | 调用 html_entity_decode ENT_HTML5 对其进行解码。

你必须解码实体然后才转换它:

//assumes $str is in UTF-8 (or ASCII)
function foo($str) {
    $dec = html_entity_decode($str, ENT_QUOTES, "UTF-8");
    //convert to UTF-16BE
    $enc = mb_convert_encoding($dec, "UTF-16BE", "UTF-8");
    $out = "";
    foreach (str_split($enc, 2) as $f) {
        $out .= "\\u" . sprintf("%04X", ord($f[0]) << 8 | ord($f[1]));
    }
    return $out;
}

如果只想替换实体,可以使用preg_replace_callback匹配实体,然后使用foo作为回调。

function repl_only_ent($str) {
    return preg_replace_callback('/&[^;]+;/',
        function($m) { return foo($m[0]); },
    $str);
}

echo repl_only_ent("&euro;foobar &acute;");

给出:

\u20ACfoobar \u00B4

关于php - 获取 html 实体的十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7482977/

相关文章:

php - 正则表达式 - Unicode 属性引用和示例

java - java (NetBeans) 中表情符号的支持?

php - 需要测试SQL查询是否成功

php - 在 Bluehost CPanel 中使用脚本创建电子邮件帐户

javascript - JWplayer Javascript 交互不起作用

css - TreeCheckbox CSS 可见文件夹

c++ - 使用 boost::locale 进行 Unicode 字符分类

php - 使用ajax基于mysql日期时间触发事件的正确方法

php - Grammar::parameterize() 必须是数组类型

javascript - 如何转换 iPad 上基于 Flash 的交互式动画