Здравствуйте, Вот уже 4 дня читаю про эти эмодзи но совершенно не могу понять саму суть этого, то есть как они работают В VK можно добавлять эмодзи символом типа "" или HTML типа "" почитав за эти эмодзи я не совсем понял что оно и откуда, решил брать из далека начал читать за кодировке, немного поняв суть кодировок и узнав за Unicode, мое воображение начало прорисовывать саму идею emoji, вернулся к тому откуда начал, то есть к самим эмодзи, уже были знания кодировок думал будет легче понять все остальное, но запутался еще больше, чем больше углублялся тем меньше понимал DoCoMo, KDDI, Google - emoji представлен в разном виде , , 󾌴 почему так? Вообщем я решил забить на это все дела и "упростить" вся для себя Сделать простую замену вида Код (PHP): $text = "Типа текст сообщения эмодзи"; $emoji_simb = array( "" => '<span class="emoji emoji2600"></span>', "☀" => '<span class="emoji emoji2600"></span>' ); $text = str_replace(array_keys($emoji_simb), $emoji_simb, $text); Но как оказалось все не так просто, символ вида "" не так просто сохранить в базе MySQL, в одной кодировке, а именно UTF-8 при сохранении в db оно просто обрезает текст после символа эмодзи типа "Типа текст сообщения эмодзи" в db попадает только "Типа текст сообщения" Короче говоря может кто объяснить простыми словами как работать с этими эмодзи? Реально уже мозг взрывается от не понимания самой сути Много качал разных js библиотек для работы с эмодзи в том числе и от твиттера https://github.com/twitter/twemoji Нашел на php https://github.com/iamcal/php-emoji но оно работает походу только с шестнадцатеричными значениями типа 0x2600 а вот html'ьку уже не катит ਨ Но мне это совсем не помогло понять что это и как работает
Это обычные символы юникода, в них нет ничего особенного. Только пихать их прямо в php-код - плохая идея. Мало того, что появляется зависимость от кодировки файла скрипта, так еще (потенциально) редактор может неожиданно отреагировать на символы с большим номером. Возможно, в этом причина реакции базы, еще варианты - не установлена кодировка соединения, или сравнение для таблицы или конкретного поля не utf8, при чем в данной ситуации предпочтительно использовать utf8_bin или utf8_unicode_ci, а не utf8_general_ci.
Я понимаю что что это обычный символ юникода у них есть с вой номер (☀ - U-2600 или 0x2600 или ☀) Но это же как бы стандарт и такой смайл эмодзи может прибыть из в не сайта, возможно какой-то пользователь android'a, ipad'a отправит его с клавиатуры emoji и оно должно отобразится на сайте в виде эмодзи который и задумал пользователь Вот я и не пойму как с этими эмодзи работать, как их парсили или заменять или что еще, а може их вообще нужно в байтах хранить? Помогите понять пожалуйста, а то совсем уже духом упал Добавлено спустя 3 минуты 35 секунд: utf8mb4, отображает в виде вопросов (??? ?? ?) Та и вообще допустим найду я нужную кодировку в базе, сохраню сообщение от пользователя вида "Текст сообщения смайли типа эмодзи все ок сохранено", а что мне дальше с этим делать то? Я не могу понять вообщем что мне делать с этим, как мне обрабатывать эти эмодзи? Добавлено спустя 1 минуту 49 секунд: Выручайте, а то совсем уже безнадега напала, уже крыша едет от этих эмодзи Я уже на эту тему столько статей прочитал, когда php изучал меньше чтения было
а зачем их обрабатывать? пришли - сохранили. запрашивают - прочитали, отдали. всё остальное браузер пользователя делает.
Нет нет, вы не правильно поняли что мне нужно Вот в данной теме когда я пишу символ "" он же браузером не обрабатывается, а мне нужно чтобы выдало в виде картинки смайла эмодзи http://www.iemoji.com/emoji-cheat-sheet/all Добавлено спустя 3 минуты 40 секунд: вот например твиттера парсер js https://github.com/twitter/twemoji он обрабатывает html ☀ и превращает их в картинки эмодзи
Так символы откуда берутся? Графический символ, который видно на экране, хранится в шрифте под номером символа юникода. Соответственно если в шрифте нет символов емодзи, то будет заглушка. Добавлено спустя 54 секунды: Во всех шрифтах, в которых есть емодзи, они будут отображаться примерно одинаково. Как кирилица во всех шрифтах с кирилицей =) Добавлено спустя 1 минуту 33 секунды: а тот парсер по ходу картинки пнгшные поставляет
Вот символ "☀" графический, а вот он же в виде эмодзи Еще один "квадрат" уже квадрат вот он же в виде эмодзи Меня интересует как превратить "☀" в картинку Добавлено спустя 4 минуты 20 секунд: Даже тут db не принимает такие символы эмодзи сморите скрин http://cs627316.vk.me/v627316517/37ba/83eQbPJK36Y.jpg
В чем проблема заменить символы на картинки? По принципу вставки смайлов в текст. Алсо, можно все же использовать качественный эмодзи-шрифт http://emojisymbols.com/emojilist.php - не хуже картинок. Дамп структуры таблицы в студию
Мне нужно именно картинки, шрифты не подойдут По принципу смалов не выйдет, в базу не могу запхнуть эти символы, символ может иметь 2 вида вот типа как ВК http://vk.com/emoji_vk?w=page-42154384_44490007, вид квадрата и вид 😊 Я скрин сделал с этого форума года пытался отправить в сообщении квадратик "" Добавлено спустя 6 минут 41 секунду: Или вот пытаюсь вставить в db http://cs627316.vk.me/v627316517/37cc/SRatDAIStII.jpg
Да именно так оно и есть, вот я и пытаюсь понять как другие решили это Типа я в ВК отправлю такой квадратик в сообщении "" он отображается в виде эмодзи значит что они както парсят все это дело или что делают? Добавлено спустя 2 минуты 57 секунд: Или точно так же я могу отправить эмодзи с андройда то есть с клавиатуры emoji, фишка в том что ВК схавает и отобразит этот смайл и не только ВК
Выходит нужно обработать отправленный пользователем текст заменить все квадраты на ("" на :fire, а потом на выходить уже обработать принципу обычных смайлов fire: => '<img src=....') или как вообще не понимаю
Статью я же читал Эти символы не получается сохранить с db http://cs627316.vk.me/v627316517/37cc/SRatDAIStII.jpg Добавлено спустя 4 минуты 23 секунды: вот тут реализовано подобное https://github.com/iamcal/php-emoji даже есть html_demo.php Но оно работает только если передать шестнадцатеричное число - 0x2600 и тут какраз работает ваш алгоритм
Не катит Я подозреваю что все же в db оно попадает не в виде квадратов, а в виде смайлов как я писал выше, типа заменяет квадрат на :smile:, а потом на выходе :smile: заменяет на <img... или span с классом Добавлено спустя 1 минуту 3 секунды: Но в таком случае я не понимаю зачем писали такую вещь как https://github.com/iamcal/php-emoji Короче я запутался и совершенно не понимаю в этом )
json_encode конвертирует символы юникода (кроме ASCII) в коды Код (Text): $str = 'Тут смайл есть'; $enc = json_encode($str); $enc = str_replace('\ue412', ':fire:', $enc); $str = json_decode($enc); echo $str;
Меня интересует реально как это делается Так-ли оно на самом деле делается или нет ? И как быть если пользователь решил добавить html кодом "" просто заменять на :fire: или? Я не огу понять пинцет работы этого дела ) Я извиняюсь за назойливость но все же не получил еще ответ на свой вопрос Добавлено спустя 3 минуты 7 секунд: Как бы вам сказать так, вот мое воображение не прорисовывает всю идею работы эмодзи Для меня это чтото типа как устроена система вселенной )
или Чтобы показать картинку, надо что-то заменить на картинку (не сложно, правда?) Это может быть ":fire:", "", "\ue412" или сразу "". На мой взгляд, текст сообщений лучше всего хранить в базе без всяких замен. Почему у тебя не сохраняется текст в базу - второй вопрос, вообще-то проблем быть не должно. Прочитай еще раз, что написано про кодировки базы в этой теме: Потом когда получаешь текст из базы, прогоняй его через json и заменяй utf-коды сразу на теги картинок. ИМХО это оптимальный вариант.