<?php
const EMOJIS = [
"00a9" => [["\u00A9\uFE0F", "\u00A9"], "\uE24E", "\uDBBA\uDF29", ["copyright"], 0, 0, 11, 0],
"00ae" => [["\u00AE\uFE0F", "\u00AE"], "\uE24F", "\uDBBA\uDF2D", ["registered"], 0, 1, 11, 0],
"203c" => [["\u203C\uFE0F", "\u203C"], "", "\uDBBA\uDF06", ["bangbang"], 0, 2, 15, 0]
];
function parse_emojis(string $string): string
{
preg_match_all('/(?<match>:.*:)/', $string, $matches, PREG_PATTERN_ORDER);
$emojis = $matches['match'];
foreach ($emojis as $emoji):
$emoji_name = trim($emoji, ':');
foreach (EMOJIS as $key => $value):
$names = $value[3];
foreach($names as $name):
if ($name == $emoji_name):
$string = str_replace($emoji, sprintf('\\u{%s}', $key), $string);
break;
endif;
endforeach;
endforeach;
endforeach;
return $string;
}
var_dump(parse_emojis('
Ok.
Nice :registered:
Very very very nice :bangbang:
Good.
'));
preferences:
59.39 ms | 402 KiB | 5 Q