remove - Cómo convertir Emoji de Unicode en PHP?
php unicode to utf8 (2)
Uso esta tabla de Emoji y pruebo este código:
<?php print json_decode(''"/u2600"''); // This convert to ☀ (black sun with rays) ?>
Si trato de convertir este / u1F600 (cara sonriente) a través de json_decode
, veo este símbolo - ὠ0
.
¿Qué pasa? ¿Cómo hacerlo bien, Emoji?
PHP 5
JSON solo puede manejar una unidad de código UTF-16 a la vez, por lo que necesita escribir el par sustituto en su lugar. Para U+1F600
esto es /uD83D/uDE00
, que funciona:
echo json_decode(''"/uD83D/uDE00"'');
😀
PHP 7
Ya no necesita usar json_decode
y solo puede usar el /u
y el literal unicode:
echo "/u{1F30F}";
🌏
Además de la respuesta de Tino, me gustaría agregar código para convertir código hexadecimal como 0x1F63C
a un símbolo Unicode en PHP5 con la división en un par suplente:
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);
salidas 😼