unicode to decimal in php

264
06 марта 2017, 13:05

Ребята, подскажите как конвертировать unicode в decimal?

Мне нужно из \ud83d\ude05 получить 😅

Спасибо большое.

Answer 1
<?php
function uniord($ch) {
$n = ord($ch{0});
 if ($n < 128) { 
     return $n; // no conversion required 
 }
 if ($n < 192 || $n > 253) { 
     return false; // bad first byte || out of range 
 }
 $arr = array(1 => 192, // byte position => range from 
              2 => 224, 
              3 => 240, 
              4 => 248, 
              5 => 252, 
              );
 foreach ($arr as $key => $val) { 
     if ($n >= $val) { // add byte to the 'char' array 
         $char[] = ord($ch{$key}) - 128; 
         $range  = $val; 
     } else { 
         break; // save some e-trees 
     } 
 }
 $retval = ($n - $range) * pow(64, sizeof($char));
 foreach ($char as $key => $val) { 
     $pow = sizeof($char) - ($key + 1); // invert key 
     $retval += $val * pow(64, $pow);   // dark magic 
 }
 return $retval; 
}
$decimal = '&#' . uniord(json_decode('"\ud83d\ude05"')) . ';';
echo $decimal;
?>

https://ideone.com/UYUD9i

Функцию uniord взял здесь.

READ ALSO
Как вывести имена из базы MySQL?

Как вывести имена из базы MySQL?

Как вывести из базы в колонке xfields только слово после |label| не во всех ячейках они присутствуют

256
Возможно ли обновлять скрипт помимо AJAX?

Возможно ли обновлять скрипт помимо AJAX?

Я создаю Telegram бота, и вот для теста я хочу, чтобы он отвечал на сообщения в зависимости от контекстаНо вот в чем дело, сообщение от бота не отправится...

232
Как получить видео пользователей?

Как получить видео пользователей?

Как я понимаю, есть 2 типа каналов:

327
Непонятный синтаксис

Непонятный синтаксис

Зачем нужен данный синтаксис, ведь тип результата не вычисляется автоматом?

241