Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get hexcode of html entities

I have a string as "€".

I want to convert it to hex to get the value as "\u20AC" so that I can send it to flash.

Same for all currency symbol..

 £  ->  \u00A3
 $ ->  \u0024
 etc
like image 277
Priya Avatar asked Jan 27 '26 18:01

Priya


1 Answers

First, note that $ is not a known entity in HTML 4.01. It is, however, in HTML 5, and, in PHP 5.4, you can call html_entity_decode with ENT_QUOTES | ENT_HTML5 to decode it.

You have to decode the entity and only then convert it:

//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;
}

If you want to replace only the entities, you can use preg_replace_callback to match the entities and then use foo as a callback.

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

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

gives:

\u20ACfoobar \u00B4
like image 103
Artefacto Avatar answered Jan 29 '26 06:01

Artefacto



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!