J'utilise ceci table d'Emoji et j'essaye ce code:
<?php print json_decode('"\u2600"'); // This convert to ☀ (black Sun with rays) ?>
Si j'essaye de convertir ceci \ u1F6 (visage souriant) par json_decode
, Je vois ce symbole - ὠ0
.
Qu'est-ce qui ne va pas? Comment obtenir un bon Emoji?
PHP 5
\u
De JSON ne peut gérer qu'une seule unité de code UTF-16 à la fois, vous devez donc écrire la paire de substitution à la place. Pour U+1F600
c'est \uD83D\uDE00
, Qui fonctionne:
echo json_decode('"\uD83D\uDE00"');
????
PHP 7
Vous n'avez plus besoin d'utiliser json_decode
Et vous pouvez simplement utiliser le \u
Et le littéral unicode:
echo "\u{1F30F}";
????
En plus de la réponse de Tino, je voudrais ajouter du code pour convertir le code hexadécimal comme 0x1F63C
En un symbole unicode en PHP5 avec le diviser en une paire de substitution:
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);
sorties ????