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 :: Добавление смайлов в чатовских сообшениях

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Скорость и пройзводительность модуля
LONGMAN
Отправлено: 09 Февраля, 2009 - 19:20:45
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Моя задача сделать в чате модуль добавления картинок (смайлов) в сообшениях. Есть две условие, простой юзер не должен вставить более одного смайла и модуль должен работать очен быстро. Имя смайлов и адреса картинок (их болшье 500) храню в двух массывах. Помогите осушествить всё это
 
 Top
Гость
Отправлено: 09 Февраля, 2009 - 19:34:44
Post Id


УДАЛЁН










for($i=1;$i<count($smiles);$i++) {
$text = str_replace($text,$smiles[$i], $pict[$i]);
}
как та так...

заменяй в цикле набор символом на тяг Img с адремом картинки-смалика
 
 Top
LONGMAN
Отправлено: 09 Февраля, 2009 - 19:50:18
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Не пойдёт. Так добавить столько картинок, сколько юзер захочит, а юзер не должен добавить более одного смайла
 
 Top
vitaliy_mad
Отправлено: 09 Февраля, 2009 - 19:54:45
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




тогда так как из вариантов...
CODE (text):
скопировать код в буфер обмена
  1.  
  2. for($i=1;$i<count($smiles);$i++) {
  3. $otext=$text;
  4. $text = str_replace($text,$smiles[$i], $pict[$i]);
  5. if ($otext!==$text)break;
  6. }
 
 Top
CodeWarrior
Отправлено: 09 Февраля, 2009 - 21:24:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 157
Дата рег-ции: Янв. 2009  
Откуда: Албания


Помог: 0 раз(а)




Если я правильно понял, то сделайте замену первого вхождения текста на смайл, а остальные - игнор... Например, скрипт находит в тексте (первый) *smile* и меняет его на img, а остальные игнорить. + еще если смайлы добавляются через JavaScript, то создать переменную которая отвечает за кол-во нажатий на смайлы. и задать лимит 1, а если привысил, то alert. А те смайлы что добавлены вручную - игнор (кроме первого).

Сам код напишу позже и скину.

(Отредактировано автором: 09 Февраля, 2009 - 21:29:26)

 
 Top
LONGMAN
Отправлено: 09 Февраля, 2009 - 22:54:45
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




JavaScript не применяется. Ещё главный фактор, код должен работать быстро, это ведь чат..
 
 Top
LONGMAN
Отправлено: 10 Февраля, 2009 - 01:31:17
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Я сделал так, как подсказал vitaliy_mad (за что огромное спасибо ему Улыбка)
PHP:
скопировать код в буфер обмена
  1. <?
  2. $count = sizeof($smiles);
  3. for ($i=1; $i<$count; $i++)
  4. {
  5. $omsg = $msg;
  6. $msg = str_replace($smiles[$i], $replaces[$i], $msg);
  7. if(($omsg !== $msg)&&($level != 'admin')) break;
  8. }
  9. ?>
Сейчас вопрос таков, можно ли добится этого эффекта только чтобы код работал ещё быстрее? Ну на пример если сделать без массывов или ещё чё небудь
 
 Top
vitaliy_mad
Отправлено: 10 Февраля, 2009 - 01:51:26
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




LONGMAN пишет:
Сейчас вопрос таков, можно ли добится этого эффекта только чтобы код работал ещё быстрее? Ну на пример если сделать без массывов или ещё чё небудь

можно с помощью регулярных выражений удалить все смыйлы кроме первого,а потом одной функцией (без цикла) обработать... но это только если смайлы приходят в одинаковом формате, то есть как то выделены на фоне остального текста...
 
 Top
LONGMAN
Отправлено: 10 Февраля, 2009 - 18:52:19
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Они выделены точками, на пример .smile. .tongue.
А с регулярками медленнее не будет?
 
 Top
Roler
Отправлено: 10 Февраля, 2009 - 18:54:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




Имхо с регулярками будет медленнее ещё.
Да и куда вам быстрее) Счёт идёт на сотые доли секунды, максимум.
 
 Top
LONGMAN
Отправлено: 10 Февраля, 2009 - 19:05:29
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Roler, тоже думаю что с регулярками будет медленнее. Это сейчас сотые доли секунды, в массывах ведь 500 объэктов, а если будет более 1000? Улыбка
(Добавление)
Кстати, как вы думаете, что быстрее работает, str_replace или str_ireplace?
 
 Top
Roler
Отправлено: 10 Февраля, 2009 - 19:24:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




LONGMAN
У вас 500 смайлов???
 
 Top
LONGMAN
Отправлено: 10 Февраля, 2009 - 20:59:59
Post Id


Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Февр. 2009  
Откуда: Tbilisi, Georgia


Помог: 0 раз(а)




Roler, да, а что? Улыбка Есть смайлы почти для всех сушествующих эмоциях Улыбка В php 500 объэктов для массыва это много?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB