<?php
header("Content-Type: text/plain; charset=utf-8");
function getUtf8Codepoint($char) {
$char = iconv('utf-8', 'utf-32', $char); $codepoint = '';
return false;
}
//utf-32 string starts with 4 bytes BOM and 2 "empty" bytes (FFFE + 0000)
for ($i = strlen($char)-1; $i > 3 ; $i--) { }
return $codepoint;
}
$str = "019azAZаяАЯ $ ½ 𢇷𢈋";
echo "String - $str\n";
echo "Codepoints list:\n";
$chars = preg_split("//u", $str, null, PREG_SPLIT_NO_EMPTY
);
foreach ($chars as $char) {
echo "$char\t-\tU+". getUtf8Codepoint($char) . "\n";
}
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ3V0Zi04Jyk7CmhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Iik7CgpmdW5jdGlvbiBnZXRVdGY4Q29kZXBvaW50KCRjaGFyKSB7CiAgICAkY2hhciA9IGljb252KCd1dGYtOCcsICd1dGYtMzInLCAkY2hhcik7CiAgICAkY29kZXBvaW50ID0gJyc7CiAgICBpZihzdHJsZW4oJGNoYXIpIDw+IDgpewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vdXRmLTMyIHN0cmluZyBzdGFydHMgd2l0aCA0IGJ5dGVzIEJPTSBhbmQgMiAiZW1wdHkiIGJ5dGVzIChGRkZFICsgMDAwMCkKICAgIGZvciAoJGkgPSBzdHJsZW4oJGNoYXIpLTE7ICRpID4gMyA7ICRpLS0pIHsKICAgICAgICAkY29kZXBvaW50IC49IHNwcmludGYoIiUwMlgiLCBvcmQoJGNoYXJbJGldKSk7CiAgICB9CiAgICAkY29kZXBvaW50ID0gcHJlZ19yZXBsYWNlKCIvXigwKXsxLDR9L3UiLCAiIiwgJGNvZGVwb2ludCk7CiAgICByZXR1cm4gJGNvZGVwb2ludDsKfQoKJHN0ciA9ICIwMTlhekFa0LDRj9CQ0K8gJCDCvSDwooe38KKIiyI7CmVjaG8gIlN0cmluZyAtICRzdHJcbiI7CmVjaG8gIkNvZGVwb2ludHMgbGlzdDpcbiI7CgokY2hhcnMgPSBwcmVnX3NwbGl0KCIvL3UiLCAkc3RyLCBudWxsLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKCmZvcmVhY2ggKCRjaGFycyBhcyAkY2hhcikgewogICAgZWNobyAiJGNoYXJcdC1cdFUrIi4gZ2V0VXRmOENvZGVwb2ludCgkY2hhcikgLiAiXG4iOwp9