Intereting Posts
Проверьте, существует ли электронная почта в базе данных mysqlnd не может подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию Преобразование даты, удобной для людей, в миллисекундах Регулярное выражение – любой текст, подходящий для URL-адреса Геолокация LONG / LAN в базе данных Запуск / остановка php-скрипта в фоновом режиме из браузера Многомерные массивы, вложенные в неограниченную глубину Объединение javascript / jQuery и PHP Значения соответствия Php между 2 массивами Проверьте, действительно ли PDF является PDF-файлом с PHP Динамические изображения для электронной почты, такие как обратные часы (в свете кеширования изображений в Gmail) Можно ли изменить методы экземпляра объекта с помощью отражения PHP move_uploaded_file не загружает изображения, когда полный веб-путь указан в системе Unix Регулярное выражение для получения содержимого div-класса в php Laravel 4 и способ развертывания приложения с использованием FTP

Как преобразовать Emoji из Unicode в PHP?

Я использую эту таблицу Emoji и пробую этот код:

<?php print json_decode('"\u2600"'); // This convert to ☀ (black sun with rays) ?> 

Если я попытаюсь преобразовать это \ u1F600 (улыбающееся лицо) через json_decode , я вижу этот символ – ὠ0 .

Что не так? Как правильно выбрать Эможи?

PHP 5

JSON \u может обрабатывать только один модуль кода UTF-16 за раз, поэтому вместо этого вам нужно написать суррогатную пару. Для U+1F600 это \uD83D\uDE00 , который работает:

 echo json_decode('"\uD83D\uDE00"'); 😀 

PHP 7

Теперь вам больше не нужно использовать json_decode и можете просто использовать литерал \u и unicode:

 echo "\u{1F30F}"; 🌏 

В дополнение к ответу Tino я хотел бы добавить код для преобразования шестнадцатеричного кода, такого как 0x1F63C в символ юникода в PHP5 с разбиением на суррогатную пару:

 function codeToSymbol($em) { if($em > 0x10000) { $first = (($em - 0x10000) >> 10) + 0xD800; $second = (($em - 0x10000) % 0x400) + 0xDC00; return json_decode('"' . sprintf("\\u%X\\u%X", $first, $second) . '"'); } else { return json_decode('"' . sprintf("\\u%X", $em) . '"'); } } 

echo codeToSymbol(0x1F63C); выходы 😼