문자열에 "€
"이 있습니다.HTML 엔티티의 16 진 코드 얻기
나는 플래시로 보낼 수 있도록 "\u20AC"
값을 얻기 위해 16 진수로 변환하고 싶습니다. 모든 통화 기호에 대한 동일
£ -> \u00A3
$ -> \u0024
etc
문자열에 "€
"이 있습니다.HTML 엔티티의 16 진 코드 얻기
나는 플래시로 보낼 수 있도록 "\u20AC"
값을 얻기 위해 16 진수로 변환하고 싶습니다. 모든 통화 기호에 대한 동일
£ -> \u00A3
$ -> \u0024
etc
먼저 필요로하는 정확한 결과를 반환하기 위해 추가 수정이 필요할 수는 $
이 known entity in HTML 4.01되지 않습니다. 그러나 HTML 5와 PHP 5.4에서는 html_entity_decode
을 ENT_QUOTES | 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;
}
을 만 엔티티를 교체하려는 경우, 당신은 콜백으로 foo
을 사용하여 다음 엔티티에 맞게 preg_replace_callback
을 사용할 수 있습니다.
function repl_only_ent($str) {
return preg_replace_callback('/&[^;]+;/',
function($m) { return foo($m[0]); },
$str);
}
echo repl_only_ent("€foobar ´");
이 제공 :
\u20ACfoobar \u00B4
당신은 진수 변환 문자열에 대한 다음과 같은 기능을 시도 할 수 있습니다 : Greg Winiarski에서
function strToHex($string) {
$hex='';
for ($i=0; $i < strlen($string); $i++) {
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
가 fourth hit on Google이다.
html_entity_decode()과 조합하십시오. 이 같은 뭔가 :
$currency_symbol = "€";
$hex = strToHex(html_entity_decode($currency_symbol));
이 코드는 안된 따라서 당신은
내 PHP 버전은 5.1.6 ... mb_convert_encoding에서 치명적인 오류가 표시됩니다 ... 어떻게 값을 얻을 수 있습니까? – Priya
@PRADEEP http://php.net/manual/en/mbstring.installation을 참조하십시오. .php – Treffynnon
@PRA 원하는 경우 mbstring 대신 iconv를 사용할 수 있습니다. iconv도 없다면 UTF-8을 수동으로 UTF-16으로 변환해야합니다. – Artefacto