<?php
function html_character_reference_decode($string, $encoding='UTF-8', $fixMappingBug=true) {
if (strtolower($match[1][0]) === "x") {
$codepoint = intval(substr($match[1], 1), 16);
} else {
$codepoint = intval($match[1], 10);
}
// @see http://w...content-available-to-author-only...t.fi/~jkorpela/www/windows-chars.html
if ($fixMappingBug && $codepoint >= 130 && $codepoint <= 159) {
$mapping = array(
8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352, 8249,
338, 141, 142, 143, 144, 8216, 8217, 8220, 8221, 8226,
8211, 8212, 732, 8482, 353, 8250, 339, 157, 158, 376);
$codepoint = $mapping[$codepoint-130];
}
var_dump($codepoint);
return mb_convert_encoding(pack("N", $codepoint), $encoding, "UTF-32BE");
');
}
var_dump(html_character_reference_decode
('—'));
PD9waHAKCiAgICBmdW5jdGlvbiBodG1sX2NoYXJhY3Rlcl9yZWZlcmVuY2VfZGVjb2RlKCRzdHJpbmcsICRlbmNvZGluZz0nVVRGLTgnLCAkZml4TWFwcGluZ0J1Zz10cnVlKSB7CiAgICAgICAgJGRlcmVmID0gY3JlYXRlX2Z1bmN0aW9uKCckbWF0Y2gnLCAnCiAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKCRtYXRjaFsxXVswXSkgPT09ICJ4IikgewogICAgICAgICAgICAgICAgJGNvZGVwb2ludCA9IGludHZhbChzdWJzdHIoJG1hdGNoWzFdLCAxKSwgMTYpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNvZGVwb2ludCA9IGludHZhbCgkbWF0Y2hbMV0sIDEwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBAc2VlIGh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi50LmZpL35qa29ycGVsYS93d3cvd2luZG93cy1jaGFycy5odG1sCiAgICAgICAgICAgIGlmICgkZml4TWFwcGluZ0J1ZyAmJiAkY29kZXBvaW50ID49IDEzMCAmJiAkY29kZXBvaW50IDw9IDE1OSkgewogICAgICAgICAgICAgICAgJG1hcHBpbmcgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICA4MjE4LCA0MDIsIDgyMjIsIDgyMzAsIDgyMjQsIDgyMjUsIDcxMCwgODI0MCwgMzUyLCA4MjQ5LAogICAgICAgICAgICAgICAgICAgIDMzOCwgMTQxLCAxNDIsIDE0MywgMTQ0LCA4MjE2LCA4MjE3LCA4MjIwLCA4MjIxLCA4MjI2LAogICAgICAgICAgICAgICAgICAgIDgyMTEsIDgyMTIsIDczMiwgODQ4MiwgMzUzLCA4MjUwLCAzMzksIDE1NywgMTU4LCAzNzYpOwogICAgICAgICAgICAgICAgJGNvZGVwb2ludCA9ICRtYXBwaW5nWyRjb2RlcG9pbnQtMTMwXTsKICAgICAgICAgICAgfQp2YXJfZHVtcCgkY29kZXBvaW50KTsKICAgICAgICAgICAgcmV0dXJuIG1iX2NvbnZlcnRfZW5jb2RpbmcocGFjaygiTiIsICRjb2RlcG9pbnQpLCAkZW5jb2RpbmcsICJVVEYtMzJCRSIpOwogICAgICAgICcpOwogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJy8mIyh4WzAtOWEtZl0rfFswLTldKyk7L2knLCAkZGVyZWYsICRzdHJpbmcpOwogICAgfQoKdmFyX2R1bXAoaHRtbF9jaGFyYWN0ZXJfcmVmZXJlbmNlX2RlY29kZSgnJiMxNTE7JykpOw==