Ответ 1
вам нужно указать значение unicode emoji.
они возвращаются функцией как значение emoji, например u '\ U000026C4', которое является снеговиком. хотя он находится в python, вы можете применить его для php.
Мне нужно отправить сообщения, содержащие emoji с моим боттом Telegram.
Итак, я копирую/вставляю код emoji :nine:
, например, в свой текст сообщения и отправляю его пользователю, но emoji не работал.
Это мой пример кода и функции:
function tel_send($key, $t, $c)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.telegram.org/bot" . $key . "/sendMessage");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "cache=" . (time() / rand(1, time() - 100)) . "&text=" . $t . "&chat_id=" . $c);
$ss = curl_exec($ch);
curl_close($ch);
return $ss;
}
tel_send($key, "My number - :nine:", $val['message']['chat']['id']);
Итак, мой вопрос: как я могу отправить emoji боттом Telegram?
вам нужно указать значение unicode emoji.
они возвращаются функцией как значение emoji, например u '\ U000026C4', которое является снеговиком. хотя он находится в python, вы можете применить его для php.
Я столкнулся с той же проблемой несколько дней назад.. Решением является использование байтов (UTF-8) из этой таблицы: http://apps.timwhitlock.info/emoji/tables/unicode
примеры:
😁\xF0\x9F\x98\x81 ЛЮБИМЧЕСКАЯ ЛИЦА С ГЛАЗАМИ ГЛАЗА
😉\xF0\x9F\x98\x89 WINKING FACE
Вы можете создать его из байтов utf8.
Смотрите список emoji и коды utf8 здесь: http://apps.timwhitlock.info/emoji/tables/unicode
Преобразуйте коды utf8 в текст ответа, готовый к телеграмме, с помощью следующего кода:
<?php
$EmojiUtf8Byte = '\xF0\x9F\x98\x81';
$pattern = '@\\\x([0-9a-fA-F]{2})@x';
$emoji = preg_replace_callback(
$pattern,
function ($captures) {
return chr(hexdec($captures[1]));
},
$utf8Byte
);
$telegramResponseText = "Hey user " . $emoji;
$emoji можно использовать в текстах ответов ботов телеграммы.
В дополнение к этому ответу fooobar.com/questions/333499/....
Ссылка, представленная Mustafa, не представляет всех эмози. Этот источник лучше http://emojipedia.org/ ☝️. В дополнение к главному знаку он имеет вариации эможи.
Реальное решение заключается в использовании https://github.com/spatie/emoji (composer require spatie/emoji
) для кодов Emoji. Теперь ваш код будет выглядеть как
Emoji::CHARACTER_EYES
или
Emoji::eyes()
Это то, что вы действительно можете использовать. В отличие от написания всех кодов вручную и с трудом понимая, что это на первый взгляд.
Я давно искал ответ для этого, но не мог заставить его работать. мои навыки написания сценариев плохие, а преобразование ответов php на bash оказалось проблемой.
Но, тем не менее, я работал с самым простым решением: Я пошел в телеграмму настольного мессенджера, там я отправляю необходимые эможи (🚌).
Чем я сделал переменную: bus = "🚌"
Теперь я могу использовать переменную в curl как: "text = some text $bus"
Это отлично работает с помощью bash на linux, я полагаю, он также может работать на php.