Запись строки с Emoji в MODx
Здравствуйте. Очередной вопрос ) Извините если дурацкий, я так себе программист.
Как в поле content записать строку с emoji смайликами? то есть если я строку чищу от этих смайликов, вот такой функцией:
Пока что вот такое code.iamcal.com/php/emoji/ решение нарыл, можно прикрутить. Но может что то проще есть?
Как в поле content записать строку с emoji смайликами? то есть если я строку чищу от этих смайликов, вот такой функцией:
public static function removeEmoji($text) {
// Match Emoticons
$regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clean_text = preg_replace($regexEmoticons, '', $text);
// Match Miscellaneous Symbols and Pictographs
$regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clean_text = preg_replace($regexSymbols, '', $clean_text);
// Match Transport And Map Symbols
$regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
$clean_text = preg_replace($regexTransport, '', $clean_text);
// Match Miscellaneous Symbols
$regexMisc = '/[\x{2600}-\x{26FF}]/u';
$clean_text = preg_replace($regexMisc, '', $clean_text);
// Match Dingbats
$regexDingbats = '/[\x{2700}-\x{27BF}]/u';
$clean_text = preg_replace($regexDingbats, '', $clean_text);
return $clean_text;
}
то строка в content пишется. Пока что вот такое code.iamcal.com/php/emoji/ решение нарыл, можно прикрутить. Но может что то проще есть?
Комментарии: 7
В общем, это решение code.iamcal.com/php/emoji/ заработало нормально. Смайлики эмоджи заменяются на html, дальше через стили оформляешь на сайта.
Странно, а почему они вырезаются? ✌
Хм, прикольно, emoji просто обрезают сообщения после сеья, при этом если тег открылся до них, то открывающий тег остается а закрывающего нет и ломается разметка. На этом сайте в частности)
Странно, что проблема в тикетах до сих пор осталась. У меня на сайте 10% всех комментариев были обрезанными из-за этих эмодзи
Проблема на самом деле не в тикетах, а в кодировке базы данных, которая не поддерживает 4 и выше байт в юникоде. Я писал плагины, которые запрещают постить юникод больше 3-х байт.
ИМХО проще вырезать их в плагине
switch ($modx->event->name) {
case 'OnBeforeCommentSave':
$text = preg_replace('/[[:^print:]]/', '', $_POST['text']);
$modx->event->params['TicketComment']->set('text', $text);
break;
case 'OnBeforeDocFormSave':
$content = preg_replace('/[[:^print:]]/', '', $resource->content);
$resource->set('content', $content);
break;
}
Заменять на пустоту может быть потенциально опасно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.