Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Система Управлением Сайта | Ошибки / Bugs Reports
# 1 Тема: [code]=)[/code] Долой смайлов из кода!
RR42
Пользователь

Avatar пользователя




новичек

Сообщений: 7
Откуда: Russia
Зарегистрирован: 24 Февраля 2009, 13:33:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 232472328
Опубликовано 22 Марта 2009, 17:18:52
smiley

Долой смайлов из кода!

---

Без комментариев
 
^ наверх ^ 232472328
# 2  
Sky
Супер Администратор

Avatar пользователя

АнарХия Х4

Администратор

Сообщений: 3023
Откуда: Astana
Зарегистрирован: 01 Апреля 2007, 18:11:10
Сказали спасибо 470 раз
Статус: offline
Опубликовано 22 Марта 2009, 17:27:55
пока просто есть для этого кнопочка


--------------------
Я в контакте

Народ читаем и запоминаем!
Не помогаю по ICQ
Не помогаю по ЛС
буду просто игнорировать эти сообщения!
Все вопросы задаем на форуме, но предварительно пользуемся поиском!
^ наверх ^
# 3  
rusbody
Пользователь

Avatar пользователя



Любитель Fusion

Сообщений: 282
Зарегистрирован: 28 Января 2008, 00:45:36
Сказали спасибо 7 раз
Статус: offline
Опубликовано 22 Марта 2009, 17:34:38
RR42 написал:
:)

Долой смайлов из кода!

---

Без комментариев



есть :)

Без комментариев


--------------------
Мой сайт на вашем движке бодибилдинг видео
^ наверх ^ rusbody.com
# 4  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 22 Марта 2009, 17:54:14
Мне реализация из семерки понравилась - там отключается автоматом.

Sky доделывай уже семерку, все равно альфа будет или бета smiley


--------------------
Retired
^ наверх ^
# 5  
RR42
Пользователь

Avatar пользователя




новичек

Сообщений: 7
Откуда: Russia
Зарегистрирован: 24 Февраля 2009, 13:33:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 232472328
Опубликовано 22 Марта 2009, 19:50:19
Найдено решение:

Заменяем "function parsesmileys($message) {" ... "}" на

$smiley = array(
"#\:\)#si" => "<img src='".IMAGES."smiley/smile.gif' alt='smiley'>",
"#\;\)#si" => "<img src='".IMAGES."smiley/wink.gif' alt='smiley'>",
"#\:\(#si" => "<img src='".IMAGES."smiley/sad.gif' alt='smiley'>",
"#\:\|#si" => "<img src='".IMAGES."smiley/frown.gif' alt='smiley'>",
"#\:o#si" => "<img src='".IMAGES."smiley/shock.gif' alt='smiley'>",
"#\:p#si" => "<img src='".IMAGES."smiley/pfft.gif' alt='smiley'>",
"#b\)#si" => "<img src='".IMAGES."smiley/cool.gif' alt='smiley'>",
"#\:d#si" => "<img src='".IMAGES."smiley/grin.gif' alt='smiley'>",
"#\:@#si" => "<img src='".IMAGES."smiley/angry.gif' alt='smiley'>",
"#f_emo_01#si" => "<img src='".IMAGES."smiley/emo/f_emo_01.gif' alt='smiley'>",
"#f_emo_02#si" => "<img src='".IMAGES."smiley/emo/f_emo_02.gif' alt='smiley'>",
"#f_emo_03#si" => "<img src='".IMAGES."smiley/emo/f_emo_03.gif' alt='smiley'>",
"#f_emo_04#si" => "<img src='".IMAGES."smiley/emo/f_emo_04.gif' alt='smiley'>",
"#f_emo_05#si" => "<img src='".IMAGES."smiley/emo/f_emo_05.gif' alt='smiley'>",
"#f_emo_06#si" => "<img src='".IMAGES."smiley/emo/f_emo_06.gif' alt='smiley'>",
"#f_emo_07#si" => "<img src='".IMAGES."smiley/emo/f_emo_07.gif' alt='smiley'>",
"#f_emo_08#si" => "<img src='".IMAGES."smiley/emo/f_emo_08.gif' alt='smiley'>",
"#f_emo_09#si" => "<img src='".IMAGES."smiley/emo/f_emo_09.gif' alt='smiley'>",
"#f_emo_10#si" => "<img src='".IMAGES."smiley/emo/f_emo_10.gif' alt='smiley'>",
"#f_emo_11#si" => "<img src='".IMAGES."smiley/emo/f_emo_11.gif' alt='smiley'>",
"#f_emo_12#si" => "<img src='".IMAGES."smiley/emo/f_emo_12.gif' alt='smiley'>",
"#f_emo_13#si" => "<img src='".IMAGES."smiley/emo/f_emo_13.gif' alt='smiley'>",
"#f_emo_14#si" => "<img src='".IMAGES."smiley/emo/f_emo_14.gif' alt='smiley'>",
"#f_emo_15#si" => "<img src='".IMAGES."smiley/emo/f_emo_15.gif' alt='smiley'>",
"#f_emo_16#si" => "<img src='".IMAGES."smiley/emo/f_emo_16.gif' alt='smiley'>",
"#f_emo_17#si" => "<img src='".IMAGES."smiley/emo/f_emo_17.gif' alt='smiley'>",
"#f_emo_18#si" => "<img src='".IMAGES."smiley/emo/f_emo_18.gif' alt='smiley'>",
"#f_emo_19#si" => "<img src='".IMAGES."smiley/emo/f_emo_19.gif' alt='smiley'>",
"#f_emo_20#si" => "<img src='".IMAGES."smiley/emo/f_emo_20.gif' alt='smiley'>",
"#f_emo_21#si" => "<img src='".IMAGES."smiley/emo/f_emo_21.gif' alt='smiley'>",
"#f_emo_22#si" => "<img src='".IMAGES."smiley/emo/f_emo_22.gif' alt='smiley'>",
"#f_emo_23#si" => "<img src='".IMAGES."smiley/emo/f_emo_23.gif' alt='smiley'>",
"#f_emo_24#si" => "<img src='".IMAGES."smiley/emo/f_emo_24.gif' alt='smiley'>",
"#f_emo_25#si" => "<img src='".IMAGES."smiley/emo/f_emo_25.gif' alt='smiley'>",
"#f_emo_26#si" => "<img src='".IMAGES."smiley/emo/f_emo_26.gif' alt='smiley'>",
"#f_emo_27#si" => "<img src='".IMAGES."smiley/emo/f_emo_27.gif' alt='smiley'>",
"#f_emo_28#si" => "<img src='".IMAGES."smiley/emo/f_emo_28.gif' alt='smiley'>",
"#f_emo_29#si" => "<img src='".IMAGES."smiley/emo/f_emo_29.gif' alt='smiley'>",
"#f_emo_30#si" => "<img src='".IMAGES."smiley/emo/f_emo_30.gif' alt='smiley'>",
"#f_emo_31#si" => "<img src='".IMAGES."smiley/emo/f_emo_31.gif' alt='smiley'>",
"#f_emo_32#si" => "<img src='".IMAGES."smiley/emo/f_emo_32.gif' alt='smiley'>",
"#f_emo_33#si" => "<img src='".IMAGES."smiley/emo/f_emo_33.gif' alt='smiley'>",
"#f_emo_34#si" => "<img src='".IMAGES."smiley/emo/f_emo_34.gif' alt='smiley'>",
"#f_emo_35#si" => "<img src='".IMAGES."smiley/emo/f_emo_35.gif' alt='smiley'>",
"#f_emo_36#si" => "<img src='".IMAGES."smiley/emo/f_emo_36.gif' alt='smiley'>",
"#f_emo_37#si" => "<img src='".IMAGES."smiley/emo/f_emo_37.gif' alt='smiley'>",
"#f_emo_38#si" => "<img src='".IMAGES."smiley/emo/f_emo_38.gif' alt='smiley'>",
"#f_emo_39#si" => "<img src='".IMAGES."smiley/emo/f_emo_39.gif' alt='smiley'>",
"#f_emo_40#si" => "<img src='".IMAGES."smiley/emo/f_emo_40.gif' alt='smiley'>",
"#f_emo_41#si" => "<img src='".IMAGES."smiley/emo/f_emo_41.gif' alt='smiley'>",
"#f_emo_42#si" => "<img src='".IMAGES."smiley/emo/f_emo_42.gif' alt='smiley'>",
"#f_emo_43#si" => "<img src='".IMAGES."smiley/emo/f_emo_43.gif' alt='smiley'>",
"#f_emo_44#si" => "<img src='".IMAGES."smiley/emo/f_emo_44.gif' alt='smiley'>",
"#f_emo_45#si" => "<img src='".IMAGES."smiley/emo/f_emo_45.gif' alt='smiley'>",
"#f_emo_46#si" => "<img src='".IMAGES."smiley/emo/f_emo_46.gif' alt='smiley'>",
"#f_emo_47#si" => "<img src='".IMAGES."smiley/emo/f_emo_47.gif' alt='smiley'>",
"#f_emo_48#si" => "<img src='".IMAGES."smiley/emo/f_emo_48.gif' alt='smiley'>",
"#f_emo_49#si" => "<img src='".IMAGES."smiley/emo/f_emo_49.gif' alt='smiley'>",
"#f_emo_50#si" => "<img src='".IMAGES."smiley/emo/f_emo_50.gif' alt='smiley'>",
"#f_emo_51#si" => "<img src='".IMAGES."smiley/emo/f_emo_51.gif' alt='smiley'>",
"#f_emo_52#si" => "<img src='".IMAGES."smiley/emo/f_emo_52.gif' alt='smiley'>",
"#f_emo_53#si" => "<img src='".IMAGES."smiley/emo/f_emo_53.gif' alt='smiley'>",
"#f_emo_54#si" => "<img src='".IMAGES."smiley/emo/f_emo_54.gif' alt='smiley'>",
"#f_emo_55#si" => "<img src='".IMAGES."smiley/emo/f_emo_55.gif' alt='smiley'>",
"#f_emo_56#si" => "<img src='".IMAGES."smiley/emo/f_emo_56.gif' alt='smiley'>",
"#f_emo_57#si" => "<img src='".IMAGES."smiley/emo/f_emo_57.gif' alt='smiley'>",
"#f_emo_58#si" => "<img src='".IMAGES."smiley/emo/f_emo_58.gif' alt='smiley'>",
"#f_emo_59#si" => "<img src='".IMAGES."smiley/emo/f_emo_59.gif' alt='smiley'>",
"#f_emo_60#si" => "<img src='".IMAGES."smiley/emo/f_emo_60.gif' alt='smiley'>",
"#f_emo_61#si" => "<img src='".IMAGES."smiley/emo/f_emo_61.gif' alt='smiley'>",
"#f_emo_62#si" => "<img src='".IMAGES."smiley/emo/f_emo_62.gif' alt='smiley'>",
"#f_emo_63#si" => "<img src='".IMAGES."smiley/emo/f_emo_63.gif' alt='smiley'>",
"#f_emo_64#si" => "<img src='".IMAGES."smiley/emo/f_emo_64.gif' alt='smiley'>",
"#f_emo_65#si" => "<img src='".IMAGES."smiley/emo/f_emo_65.gif' alt='smiley'>",
"#f_emo_66#si" => "<img src='".IMAGES."smiley/emo/f_emo_66.gif' alt='smiley'>",
"#f_emo_67#si" => "<img src='".IMAGES."smiley/emo/f_emo_67.gif' alt='smiley'>",
"#f_emo_68#si" => "<img src='".IMAGES."smiley/emo/f_emo_68.gif' alt='smiley'>",
"#f_emo_69#si" => "<img src='".IMAGES."smiley/emo/f_emo_69.gif' alt='smiley'>",
"#f_emo_70#si" => "<img src='".IMAGES."smiley/emo/f_emo_70.gif' alt='smiley'>",
"#f_emo_71#si" => "<img src='".IMAGES."smiley/emo/f_emo_71.gif' alt='smiley'>",
"#f_emo_72#si" => "<img src='".IMAGES."smiley/emo/f_emo_72.gif' alt='smiley'>",
"#f_emo_73#si" => "<img src='".IMAGES."smiley/emo/f_emo_73.gif' alt='smiley'>",
"#f_emo_74#si" => "<img src='".IMAGES."smiley/emo/f_emo_74.gif' alt='smiley'>",
"#f_emo_75#si" => "<img src='".IMAGES."smiley/emo/f_emo_75.gif' alt='smiley'>",
"#f_emo_76#si" => "<img src='".IMAGES."smiley/emo/f_emo_76.gif' alt='smiley'>",
"#f_emo_77#si" => "<img src='".IMAGES."smiley/emo/f_emo_77.gif' alt='smiley'>",
"#f_emo_78#si" => "<img src='".IMAGES."smiley/emo/f_emo_78.gif' alt='smiley'>",
"#f_emo_79#si" => "<img src='".IMAGES."smiley/emo/f_emo_79.gif' alt='smiley'>",
"#f_emo_80#si" => "<img src='".IMAGES."smiley/emo/f_emo_80.gif' alt='smiley'>",
"#f_emo_81#si" => "<img src='".IMAGES."smiley/emo/f_emo_81.gif' alt='smiley'>",
"#f_emo_82#si" => "<img src='".IMAGES."smiley/emo/f_emo_82.gif' alt='smiley'>",
"#f_emo_83#si" => "<img src='".IMAGES."smiley/emo/f_emo_83.gif' alt='smiley'>",
"#f_emo_84#si" => "<img src='".IMAGES."smiley/emo/f_emo_84.gif' alt='smiley'>",
"#f_emo_85#si" => "<img src='".IMAGES."smiley/emo/f_emo_85.gif' alt='smiley'>",
);

function doParseSmileys($string) {
global $smiley;
foreach($smiley as $key=>$smiley_img) $string = preg_replace($key, $smiley_img, $string);
//echo "[[[".$string."]]]";
return $string;
}

function processString2ParseSmileys($level, $str, $found, $tag) {
$delta = strlen($tag);
if ($level == 0) {
return doParseSmileys(substr($str,0,$found)).substr($str,$found,$delta);
} else {
return substr($str,0,$found+$delta);
}
}

function explodeNextTag($str, $level, $opening_tag, $closing_tag) {
//echo $level.$opening_tag." + ";
$found = strpos($str, $opening_tag);
if ($found != false) {
$result = processString2ParseSmileys($level, $str, $found, $opening_tag);
$level++;
$found += 6;
} else {
$found = strpos($str, $closing_tag);
if ($found != false) {
$result = processString2ParseSmileys($level, $str, $found, $closing_tag);
$level--;
$found += 7;
}
}
if ($found != false) {
$result .= explodeNextTag(substr($str,$found), $level, $opening_tag, $closing_tag);
} else {
$result = doParseSmileys($str);
}
return $result;
}

// Parse smiley bbcode into HTML images
function parsesmileys($message) {
$message = explodeNextTag($message, 0, "[ =) code]", "[ =) /code]");
return $message;
}



Вроде шустро работает.

Фишка моего кода в том, что смайлы можно отключать любым тегом. Достаточно вместо
$message = explodeNextTag($message, 0, "[ =) code]", "[ =) /code]");



написать, например,

$message = explodeNextTag($message, 0, "[nosmileys]", "[/nosmileys]");



Смайлы отключаются внутри тегов любого уровня вложенности. Единственное, чем я могу вас огорчить - нельзя использовать пока более 1 тега для отключения смайлов. Но это поправимо.

P.S. Естественно, [ =) code] надо читать без смайла. Это обход BBcode.

P.P.S. У меня на сайте вообще нет смайлов - сайт академический. Просто я здесь с проблемой столкнулся.


[Изменил(а) RR42, 22 Марта 2009, 19:58:41]  
^ наверх ^ 232472328
# 6  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 22 Марта 2009, 20:12:05
Теперь я спешу тебя огорчить - все гораздо проще.

Скрипт в семерке проверяет текст сообщения на наличие тегов типа [code] и если они есть, САМ отключает смайлы.

Неправда ли элегантно и быстро? Ну если очень хочется то можно и такой тег зафигачить, потом еще ченить сверху и еще - и в итоге будет загрузка проца сервака как у переобвешанного фичами ИПБ smiley


--------------------
Retired
^ наверх ^
# 7  
RR42
Пользователь

Avatar пользователя




новичек

Сообщений: 7
Откуда: Russia
Зарегистрирован: 24 Февраля 2009, 13:33:47
Сказали спасибо 0 раз
Статус: offline
ICQ статус 232472328
Опубликовано 22 Марта 2009, 22:08:32
Я предложил тег [nosmileys], функции которого можно распространить на остальные теги.

По поводу нагрузки. За 2 года на этом сайте оставили 20000 сообщений. Если грубо оценить, что в каждом сообщении есть по 2 тега [code] и 2 смайла вне тегов, то время парсинга всех сообщений - 15 секунд (1,8 ггц проц). Сайт создан где-то 650000000 секунд назад. Тогда относительно парсинга сайт простаивал 649999985 секунд.

Если бы парсинг проводился при каждом промотре - то нагрузка была бы колоссальной. А тут одно сообщение постится в среднем за 8 часов (с момента поднятия).

Можно проще поступить - вообще смайлы не использовать (кстати, у меня на сайте нет ни одного смайла).


[Изменил(а) RR42, 22 Марта 2009, 22:27:56]  
^ наверх ^ 232472328
# 8  
hitori2008
Пользователь

Avatar пользователя



Любитель Fusion

Сообщений: 153
Откуда: Ylanovsk
Зарегистрирован: 15 Сентября 2008, 22:57:42
Сказали спасибо 7 раз
Статус: offline
ICQ статус 478891377
Опубликовано 23 Марта 2009, 00:13:27
а в чем особо то проблема? разве нельзя в maincore обозначение смайлов сменить, особенно в стандартной комплектации вроде гдет 9 смайлов стандартными символами. ну а остальные не видел кода да и не знаю тегов типа <smiley>smiley
 
^ наверх ^ 478891377
Перейти на форум:


96,115,175 уникальных посетителей
сейчас: 14 Мая 2024, 18:02:02
Генерация страницы: 0.22 сек.

Original size:42 кб.
GZipped size: 8 кб.
Compression:80%