fork download
  1. <?php
  2. header("Content-Type: text/plain; charset=utf-8");
  3.  
  4.  
  5. function getUtf16Symbols($str) {
  6. //convert to utf-16be
  7. $str = iconv("utf-8","utf-16be", $str);
  8. $symbolList = [];
  9. for ($i = 0; $i < strlen($str); $i += 2) {
  10. $symbolList[] = $str[$i] . $str[$i+1];
  11. }
  12. return $symbolList;
  13. }
  14.  
  15. function getUtfCodepoint($char) {
  16. $h = dechex(ord($char[0])) . dechex(ord($char[1]));
  17. return strtoupper("U+" . sprintf("%04s", $h));
  18. }
  19.  
  20. $str = "019azAZаяАЯ $ ½";
  21. echo "String - $str\n";
  22.  
  23. echo "Codepoints list:\n";
  24.  
  25. $originalSymbols = preg_split("//u", $str, null, PREG_SPLIT_NO_EMPTY);
  26. $utf16Symbols = getUtf16Symbols($str);
  27.  
  28. for ($i = 0; $i < count($originalSymbols); $i++) {
  29. echo $originalSymbols[$i] . " - ";
  30. echo getUtfCodepoint($utf16Symbols[$i]) . "\n";
  31. }
Success #stdin #stdout 0.01s 52536KB
stdin
Standard input is empty
stdout
String - 019azAZаяАЯ $ ½
Codepoints list:
0 - U+0030
1 - U+0031
9 - U+0039
a - U+0061
z - U+007A
A - U+0041
Z - U+005A
а - U+0430
я - U+044F
А - U+0410
Я - U+042F
  - U+0020
$ - U+0024
  - U+0020
½ - U+00BD