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]   

> Описание: Помоготе организовать смайлы
Zip
Отправлено: 28 Августа, 2008 - 18:45:45
Post Id



Новичок


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


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




Подскажите как зделать чтоб в сообщении отображался только один смайл ?
Например если юзер введет такое сообщение (где .smile. это код смайла)
"Бла бла бла .smile..smile..smile..smile." то нужно чтоб первое значение смайла заменялось на смайл а все остальные оставалось текстом . Надеюсь понятно обяснил )
 
 Top
SION-ZENIT
Отправлено: 28 Августа, 2008 - 18:50:10
Post Id


Частый гость


Покинул форум
Сообщений всего: 148
Дата рег-ции: Июль 2007  
Откуда: SPb


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




А зачем вам это? Ведь многие любят делать так Улыбка Улыбка Улыбка
 
 Top
Zip
Отправлено: 28 Августа, 2008 - 19:17:15
Post Id



Новичок


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


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




SION-ZENIT, Я пишу wap скрип а для WAP это лишний траф )
 
 Top
pifon1989
Отправлено: 28 Августа, 2008 - 21:56:04
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Май 2008  


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




Предположим, ваше сообщение, введённое в форму, записано в переменную $mess ($_POST["mess"]).
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Создаём массив с кодами смайликов
  4. $smile[0] = ".smile.";
  5. $smile[1] = ".blink.";
  6. $smile[2] = ".kiss.";
  7. // И т.п.
  8. $csm = sizeof($smile);
  9. // Воспользуемся циклом, чтобы пройти по массиву и найти
  10. // повторяющиеся упомянутые в массиве элементы
  11. foreach($smile as $value)
  12. {
  13. // Ищем пример повторения, пишем в переменную
  14. preg_match_all("/( ?".$value." ?){2,999}/", $mess, $fmess);
  15. // Заносим переменную в наш массив
  16.     for($j = 0; !empty($fmess[$j][0]); $j++)
  17.     {
  18.     $cmess[][$j] = $fmess[$j][0];
  19.     }
  20. }
  21. // предположим, что всё прошло успешно, тогда у нас есть
  22. // массив $cmess, полный повторяющихся в тексте элементов
  23.  
  24. // применяем второй цикл для замены элементов
  25. for($i = 0; $i < $csm; $i++)
  26. {
  27.     if (!empty($cmess[$i][0]) && !empty($smile[$i]))
  28.     {
  29.     $ncm = sizeof($cmess[$i]);
  30.         for($k = 0; $k < $ncm; $k++)  
  31.         {      
  32.         $mess = preg_replace("/".$cmess[$i][$k]."/", $smile[$i], $mess);
  33.         }
  34.     }
  35. }
  36. // И далее с очищенным сообщением в переменной $mess производим
  37. // необходимые действия.
  38. echo $mess;
  39. ?>
  40.  

С вас пиченька Голливудская улыбка

(Отредактировано автором: 28 Августа, 2008 - 21:57:07)



-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 Top
Zip
Отправлено: 29 Августа, 2008 - 11:51:34
Post Id



Новичок


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


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




pifon1989, Это не подходит
 
 Top
EuGen Администратор
Отправлено: 29 Августа, 2008 - 11:59:52
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //предполагаем, что $text - Ваша строка, заменяем .smile. на <img src="smile.gif">:
  4. $smile=".smile.";
  5. $img="<img src=\"smile.gif\">";
  6. $text=str_replace($smile, $img, $text, 1);
  7. ?>
  8.  

Описание функции тут:
http://php.su/functions/?str_replace
Код сработает для PHP версии от 5.0 и выше (в ранних версиях нет параметра count у этой функции)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Zip
Отправлено: 29 Августа, 2008 - 14:44:45
Post Id



Новичок


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


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




EuGen, Тоже не катит ( "Fatal Error"
(Добавление)
Мне кажется это можно сделать с помощью регулярных выражений , только я в них не силён ((
 
 Top
Вездеход
Отправлено: 29 Августа, 2008 - 14:54:28
Post Id



Частый посетитель


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


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




может полный текст ошипки скажите?


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
pifon1989
Отправлено: 29 Августа, 2008 - 23:22:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Май 2008  


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




Zip пишет:
pifon1989, Это не подходит

А, ну да, бли-ин... дайте-ка подумать...
Предположим, ваше сообщение, введённое в форму, записано в переменную $mess ($_POST["mess"]).
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // Создаём массив с кодами смайликов, образец:
  4. // $smile[0][0] = "код";
  5. // $smile[0][1] = "адрес";
  6. $smile[0][0] = ".smile.";
  7. $smile[0][1] = "/smile.gif";
  8. $smile[1][0] = ".blink.";
  9. $smile[1][1] = "../blink.jpg";
  10. $smile[2][0] = ".kiss.";
  11. $smile[2][1] = "/kisses/kiss.png";
  12. // И т.п.
  13. $csm = sizeof($smile);
  14. // Воспользуемся циклом, чтобы пройти по массиву и найти
  15. // повторяющиеся упомянутые в массиве элементы
  16. foreach($smile as $value)
  17. {
  18. // Ищем пример повторения, пишем в переменную
  19. preg_match_all("/( ?".$value[0]." ?){2,999}/", $mess, $fmess);
  20. // Заносим переменную в наш массив
  21.     for($j = 0; !empty($fmess[$j][0]); $j++)
  22.     {
  23.     $cmess[][$j] = $fmess[$j][0];
  24.     }
  25. }
  26. // предположим, что всё прошло успешно, тогда у нас есть
  27. // массив $cmess, полный повторяющихся в тексте элементов
  28.  
  29. // применяем второй цикл для замены элементов
  30. for($i = 0; $i < $csm; $i++)
  31. {
  32.     if (!empty($cmess[$i][0]) && !empty($smile[$i][0]))
  33.     {
  34.     $ncm = sizeof($cmess[$i]);
  35.         for($k = 0; $k < $ncm; $k++)  
  36.         {
  37.         $choose = preg_replace("/".$smile[$i][0]."/", "<img src=\"".$smile[$i][1]."\">", $cmess[$i][$k], 1);
  38.         $mess = preg_replace("/".$cmess[$i][$k]."/", $choose, $mess);
  39.         }
  40.     }
  41. }
  42. // И далее с очищенным сообщением в переменной $rmess производим
  43. // необходимые действия.
  44. echo $mess;
  45. ?>
  46.  

Видоизменил последнее действие.
Просто меня чего-то переклинило и показалось, что замена на смайлы у вас уже настроена. Бывает. Улыбка
EuGen, профи возвращаются. Улыбка Я уж было испугался, что вы решили уйти. Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. //предполагаем, что $text - Ваша строка, заменяем .smile. на <img src="smile.gif">:
  4. $smile=".smile.";
  5. $img="<img src=\"smile.gif\">";
  6. $text=str_replace($smile, $img, $text, 1);
  7. ?>
  8.  

Хм... ну а что будет, если в сообщениях не одна строка, а много и в каждой смайлы, и в каждой есть повторения того же .smile.? Причём я полагаю, тут стоит призадуматься ещё и над вариантом:
$text = "text1 .smile..smile./n
text2 .smile..smile.";
При обработке через str_replace() получится нечто вроде
$text = "text1 <img src=\"smile.gif\">.smile./n
text2 .smile..smile.";
А как же другие вхождения того же .smile..smile.?

(Отредактировано автором: 29 Августа, 2008 - 23:22:53)



-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB