Для обеспечения совместимости с уже существующим PHP-решением мне требуется
вход: ? // emoji character
,
выход: 😁
Я полагаю, что это кодировка "амперсанда и хэша" (я не уверен, что это то, что она называется ... Будь я проклят, если смогу найти какие-либо ресурсы, которые объясняют, как я пришел к этому формату ... или почему это кодировка подходит для ...)
Я могу получить байты путем URL-кодирования Unicode ...
<?php print urlencode("?"); /* Output: %F0%9F%98%81 */ ?>
... и я могу использовать Regex для преобразования этого в нужный мне формат ... но мне не нравится это решение. Это очень хакерское и очень склонное к случайному кодированию некодированных строк ...
<?php
$enc = urlencode("?");
print $enc; // %F0%9F%98%81
$find = '/(%)([0-9a-fA-F][0-9a-fA-F])/i';
$replacement = '&#x$2;';
print preg_replace($find,$replacement,$enc);
?>
Результат: 😁
Есть ли лучший подход?
Как называется эта кодировка и как ее получить (через PHP)?
Большое спасибо!
Редактировать: Оказывается, такой подход в конце концов не подходит. urlencode
преобразует все пробелы в +
символов. Должен быть правильный подход, чтобы прийти к этому формату?