Перейти к контенту

Текстовое представление смайликов


Song

Рекомендуемые сообщения

Некоторые люди берегут свой трафик и не показывают картинок в браузере. Всё бы хорошо, но уж больно смайлы ущербно выглядят. Просто квадратик или вообще пустое место.

Предлагаю немного улучшить этим людям жизнь.

Теперь в текстовом режиме смайлы будут не просто квадратиком, а квадратиком с собвственном самим текстовым представлением смайлика.

 

Файл post_parser.php

Находим

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='$image' /><!--endemo-->";

Заменяем на

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='$code' /><!--endemo-->";

Ссылка на комментарий
Поделиться на других сайтах

Сделаем тоже самое для таблицы смайлов.

В файлах Topics.php (дополнительный мод - расширенная форма быстрого ответа, если есть) и Post.php

найдём строку

   $smilies .= "<td><a href={$out_delim}javascript:emoticon($in_delim".$elmo['typed']."$in_delim){$out_delim}><img src=\"".$ibforums->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='smilie' border='0' /></a> </td>\n";

и заменим её на

   $smilies .= "<td><a href={$out_delim}javascript:emoticon($in_delim".$elmo['typed']."$in_delim){$out_delim}><img src=\"".$ibforums->vars['EMOTICONS_URL']."/".$elmo['image']."\" alt='{$elmo['typed']}' border='0' /></a> </td>\n";

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
квадратиками они отображется в эксплорере, в опере норм. почему-то для 1.3 этот спопособ не прокатил. как были квадритике в осле, так и остались.
Ссылка на комментарий
Поделиться на других сайтах

  • 6 месяцев спустя...

с alt='$code' получается интересный глюк.

Есть смайлики

 1) :oh: и 2) :O

Когда пишем 1й, получается весьма странный результат (это в БД)

<!--emo&:oh:--><img src='Ссылка на картику 1го смайла' border='0' style='vertical-align:middle' alt='<!--emo&:O--><img src='Ссылка на картинку 2го смайла' border='0' style='vertical-align:middle' alt=':O' /><!--endemo-->h:' /><!--endemo-->

 

В БД видно, что в alt записывается смайлик 2.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 месяца спустя...

PALADIN+, и не только в этом глюк.

В предварительном просмотре ответа все смайлики почему-то прогоняются дважды и получается, что если alt содержит смайлик, то он тоже форматируется.

Предполагаю, что для решения этой ситуации надо в парсере подправить вот этот код:

$txt = preg_replace( "!(?<=[^\w&;/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

Добавить в него что-то (не очень дружу с регулярными, поэтому не знаю что именно :D), чтобы исключить форматирование смайликов, которые содержатся в alt'е, то есть не форматировать вот такое: alt=';)'.

Помогите, плиз, как такое сделать?

Ссылка на комментарий
Поделиться на других сайтах

точняк))

если в альте будет смайл, то он превратится в еще один смайл

 

значит надо просто немного изменять альт при выводе, а именно убирать из него какой-нибудь ключевой символ

типа " : "

или заменять его на что-нибудь необрабатываемое

 

или изменять альт как-нибудь еще

 

return "<!--emo&".trim($code)."--><img src='{$ibforums->vars['EMOTICONS_URL']}/$image' border='0' style='vertical-align:middle' alt='".str_replace(':','',$code)."' /><!--endemo-->";

похоже на правду?

Ссылка на комментарий
Поделиться на других сайтах

я думаю, что лучше будет все-таки изменить в парсере

$txt = preg_replace( "!(?<=[^\w&;/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

на

$txt = preg_replace( "!(?<=[^\w&';/])$code(?=.\W|\W.|\W$)!ei", "\$this->convert_emoticon('$code', '$image')", $txt );

у меня получилось, но можно ли употреблять символ ' (кавычку) в регулярных выражениях? я такого никогда раньше не видел... проблем не будет?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.