Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Добавление смайлов в чатовских сообшениях
Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009 Откуда: Tbilisi, Georgia
Помог: 0 раз(а)
Моя задача сделать в чате модуль добавления картинок (смайлов) в сообшениях. Есть две условие, простой юзер не должен вставить более одного смайла и модуль должен работать очен быстро. Имя смайлов и адреса картинок (их болшье 500) храню в двух массывах. Помогите осушествить всё это
Гость
Отправлено: 09 Февраля, 2009 - 19:34:44
УДАЛЁН
for($i=1;$i<count($smiles);$i++) {
$text = str_replace($text,$smiles[$i], $pict[$i]);
}
как та так...
заменяй в цикле набор символом на тяг Img с адремом картинки-смалика
LONGMAN
Отправлено: 09 Февраля, 2009 - 19:50:18
Новичок
Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009 Откуда: Tbilisi, Georgia
Помог: 0 раз(а)
Не пойдёт. Так добавить столько картинок, сколько юзер захочит, а юзер не должен добавить более одного смайла
vitaliy_mad
Отправлено: 09 Февраля, 2009 - 19:54:45
Участник
Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008 Откуда: Украина, Мариуполь
Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009 Откуда: Албания
Помог: 0 раз(а)
Если я правильно понял, то сделайте замену первого вхождения текста на смайл, а остальные - игнор... Например, скрипт находит в тексте (первый) *smile* и меняет его на img, а остальные игнорить. + еще если смайлы добавляются через JavaScript, то создать переменную которая отвечает за кол-во нажатий на смайлы. и задать лимит 1, а если привысил, то alert. А те смайлы что добавлены вручную - игнор (кроме первого).
Сейчас вопрос таков, можно ли добится этого эффекта только чтобы код работал ещё быстрее? Ну на пример если сделать без массывов или ещё чё небудь
vitaliy_mad
Отправлено: 10 Февраля, 2009 - 01:51:26
Участник
Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008 Откуда: Украина, Мариуполь
Помог: 0 раз(а)
LONGMAN пишет:
Сейчас вопрос таков, можно ли добится этого эффекта только чтобы код работал ещё быстрее? Ну на пример если сделать без массывов или ещё чё небудь
можно с помощью регулярных выражений удалить все смыйлы кроме первого,а потом одной функцией (без цикла) обработать... но это только если смайлы приходят в одинаковом формате, то есть как то выделены на фоне остального текста...
Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009 Откуда: Tbilisi, Georgia
Помог: 0 раз(а)
Они выделены точками, на пример .smile. .tongue.
А с регулярками медленнее не будет?
Roler
Отправлено: 10 Февраля, 2009 - 18:54:31
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Имхо с регулярками будет медленнее ещё.
Да и куда вам быстрее) Счёт идёт на сотые доли секунды, максимум.
LONGMAN
Отправлено: 10 Февраля, 2009 - 19:05:29
Новичок
Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009 Откуда: Tbilisi, Georgia
Помог: 0 раз(а)
Roler, тоже думаю что с регулярками будет медленнее. Это сейчас сотые доли секунды, в массывах ведь 500 объэктов, а если будет более 1000? (Добавление)
Кстати, как вы думаете, что быстрее работает, str_replace или str_ireplace?
Roler
Отправлено: 10 Февраля, 2009 - 19:24:55
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
LONGMAN
У вас 500 смайлов???
LONGMAN
Отправлено: 10 Февраля, 2009 - 20:59:59
Новичок
Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009 Откуда: Tbilisi, Georgia
Помог: 0 раз(а)
Roler, да, а что? Есть смайлы почти для всех сушествующих эмоциях В php 500 объэктов для массыва это много?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.