<?php
error_reporting(-1);
mb_internal_encoding('utf-8');
header("Content-Type: text/plain; charset=utf-8");

function getUtf8Codepoint($char) {
    $char = iconv('utf-8', 'utf-32', $char);
    $codepoint = '';
    if(strlen($char) <> 8){
        return false;
    }
    //utf-32 string starts with 4 bytes BOM and 2 "empty" bytes (FFFE + 0000)
    for ($i = strlen($char)-1; $i > 3 ; $i--) {
        $codepoint .= sprintf("%02X", ord($char[$i]));
    }
    $codepoint = preg_replace("/^(0){1,4}/u", "", $codepoint);
    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";
}