Лучший способ сделать Twitter emojis из twitter в html?

Таким образом, у меня есть объект json из запроса twitter api. В исходной форме текст выглядит так:

"check out this emoji \ud83d\udc98"

Я потратил много времени на чтение unicode и его форматов, и мне удалось создать библиотеку с jon unicode в качестве таких клавиш:

 $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' ), ... ); 

Итак, теперь я пытаюсь как ад оценить json unicode, который я получил из twitter в виде строки, которую я могу затем добавить к этой функции:

 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"/>'; } 

Что возвращает изображение из твиттера этого emoji, но я не могу, по-видимому, preg_replace json-данные в PHP. Иногда я получаю эту ошибку:

 preg_replace(): Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u 

Мой preg_replace похож на это (обратите внимание, что это не работает):

  $text = strval(json_encode($twitter_datum->text)); $pattern = "/\\\\u([a-f0-9]{4})/e"; $text = preg_replace($pattern, "get_src($1)", $text; 

Этот шаблон захватывает «d83d» и «dc98» отдельно.

Я пытаюсь сделать невозможным? Я просто хочу получить 1f498 (из словаря) из "check out this emoji!! \ud83d\udc98"

Для тех, кто пытается сделать что-то подобное, вот что я узнал:

Строковые операции над чем-то json_encodeed – плохая идея. Я делал это, потому что я не мог видеть выражение юникода, но мало ящиков, и поэтому и не знал, как их оценивать.

Emoji для PHP – БОЛЬШОЙ ресурс для такого рода вещей. Он может заменить любое появление unoode emoji с <span class="xxx'></span> , где xxx сопоставляется с спрайтом этого emoji. Он делает что-то похожее на то, что я пытался сделать, но для двух основных отличий :

  • Регулярное выражение кода находится в json_decoded сущности
  • Вместо того, чтобы заменять его на <img> с src, идущим на твиттер, это относится к <span> со ссылкой на локальный png

Теперь мой код выглядит так, и он работает нормально. Единственная проблема в том, что если / при добавлении новых emojis, они не будут распознаны этим скриптом. Возможно, в этот момент emojis будет немного более универсальным, с полной поддержкой браузера и т. Д. Вот что у меня есть: $ json

 function twitter_chron() { $json = get_tweets(50); $twitter_data = json_decode($json); include(ABSPATH . 'wp-content/themes/custom/emoji/emoji.php'); foreach($twitter_data as $twitter_datum) { $id = $twitter_datum->id; if (property_exists($twitter_datum, 'retweeted_status')) { $text = 'RT: ' . $twitter_datum->retweeted_status->text; } else { $text = $twitter_datum->text; } $text = emoji_unified_to_html($text); $text = iconv("UTF-8", "ASCII//IGNORE", $text); insert_tweet($id, $text, $date); } } 

emoji_unified_to_html($text) – из emoji.php . У меня есть дополнительные функции, которые я запускаю против тела твитов для ссылок, хэштегов и упоминаний, но я полагаю, что это не относится к этой конкретной проблеме emojis.

Надеюсь, это поможет кому-то.