J'ai donc l'objet json d'une requête de l'API de Twitter. Dans sa forme brute, le texte est comme ceci:La meilleure façon de rendre Twitter emojis de twitter en html?
"check out this emoji \ud83d\udc98"
J'ai passé beaucoup de temps à lire sur unicode et il est des formats, et je l'ai réussi une bibliothèque qui a le unicode JSON comme les clés comme ceci:
$emoji_dictionary = array(
'\ud83d\udd39'=> array(
'emoji-id'=> 'e-B76',
'codepoint'=> 'U+1F539',
'name'=> 'SMALL BLUE DIAMOND',
'twitter-id'=> '1f539'
),
'\ud83d\ude3f'=> array(
'emoji-id'=> 'e-34D',
'codepoint'=> 'U+1F63F',
'name'=> 'CRYING CAT FACE',
'twitter-id'=> '1f63f'
),
...
);
alors maintenant, je l'ai essayé comme l'enfer pour évaluer l'unicode JSON que je suis arrivé de Twitter comme une chaîne, que je peux ensuite jeter à cette fonction:
function get_src($str) {
echo 'regex found:' . $str . '<br />';
return '<img class="twitter-emoji" src="https://abs.twimg.com/emoji/v1/72x72/' . $emoji_dictionary[$str]['twitter-id'] . '.png"/>';
}
Qui renvoie une image de twitter de cet emoji, mais je ne peux pas sembler à preg_replace
les données json correctement en PHP. Je reçois cette erreur parfois:
preg_replace(): Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u
Mon preg_replace est comme ça (notez que cela ne fonctionne pas):
$text = strval(json_encode($twitter_datum->text));
$pattern = "/\\\\u([a-f0-9]{4})/e";
$text = preg_replace($pattern, "get_src($1)", $text;
Ce modèle de la d83d 'attrape et 'dc98' séparément.
Est-ce que ce que j'essaie de faire est impossible? Je veux juste obtenir 1f498
(du dictionnaire) de "check out this emoji!! \ud83d\udc98"