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 :: Смайлы и BB-коды

 PHP.SU

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


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

> Без описания
DimKA
Отправлено: 10 Января, 2010 - 23:26:17
Post Id


Новичок


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


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




Помогите пожалуйста или хотя бы дайте наводку что где почитать или посмотреть пример как организовать смайлы и BB-коды Улыбка ! есть переменная $message она заносится в бд и потом из бд выводится как мне заменять определенные символы

например .smile. на <ims src="smile.gif" alt="smile"> ?

также текст на <b>текст</b> или <strong></string>
 
 Top
SAD
Отправлено: 10 Января, 2010 - 23:32:20
Post Id



Постоянный участник


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


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




google и регулярные выражения вам в помощь
 
 Top
RomAndry Администратор
Отправлено: 10 Января, 2010 - 23:43:14
Post Id



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


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


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




нужны правила создания смайлов и обрамления, далее регулярным выражением парсится сообщение, желательно до записи в БД

как вариант, скачать исходники форумов и посмотреть как реализовано.
А вот когда будут вопросы, проблемы - с удовольствием поможем.
 
My status
 Top
DimKA
Отправлено: 11 Января, 2010 - 16:11:30
Post Id


Новичок


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


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




вот фрагмент кода

PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['message']))
  2. {
  3.  
  4.     $message = $_POST['message'];
  5. }
  6. function bb($message){
  7. $message=str_replace('[b ]','<b>',$str);
  8. $message=str_replace('[ /b]','</b>',$str);
  9. $message=str_replace('[red]','<font color=red>',$str);
  10. $m=str_replace('[/red]','</font>',$str); //ну и т.д.
  11. return $message;
  12. }
  13. $r = mysql_query ("INSERT INTO users (name,message) VALUES
  14. ('$name','$message')") or die (mysql_error());


помогите теперь обработать функц. переменную ,message это сам текст сообщения который заносится в бд.
 
 Top
JustUserR
Отправлено: 11 Января, 2010 - 16:29:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




DimKA Не совсем так - необходимо проверяьь на закрытие BB-кодов а то в вашем случае сделаю [b] [red] и весь оставлийся текст может быть жирным и красным Улыбка Так что надо проверять как минимум парность открыващих и закрыващих тегов а как максимум через стек проверять правильность их закрытия по очередности


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DimKA
Отправлено: 11 Января, 2010 - 20:47:29
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $bbcode = array(
  2.  
  3. '/\[i\](.+)\[\/i\]/isU' => '<em>$1</em>',
  4.  
  5. '/\[b\](.+)\[\/b\]/isU' => '<strong>$1</strong>',
  6.  
  7. '/\[sub\](.+)\[\/sub\]/isU' => '<sub>$1</sub>',
  8.  
  9. '/\[sup\](.+)\[\/sup\]/isU' => '<sup>$1</sup>',
  10.  
  11. '/\[del\](.+)\[\/del\]/isU' => '<del>$1</del>',
  12.  
  13. '/\[u\](.+)\[\/u\]/isU' => '<span style="text-decoration:underline;">$1</span>',
  14.  
  15. '/\[big\](.+)\[\/big\]/isU' => '<span style="font-size:large;">$1</span>',
  16.  
  17. '/\[small\](.+)\[\/small\]/isU' => '<span style="font-size:small;">$1</span>',
  18.  
  19. '/\[code\](.+)\[\/code\]/isU' => '<code>$1</code>',
  20.  
  21. '/\[red\](.+)\[\/red\]/isU' => '<span style="color:#ff0000;">$1</span>',
  22.  
  23. '/\[yellow\](.+)\[\/yellow\]/isU' => '<span style="color:#ffff22;">$1</span>',
  24.  
  25. '/\[green\](.+)\[\/green\]/isU' => '<span style="color:#00bb00;">$1</span>',
  26.  
  27. '/\[blue\](.+)\[\/blue\]/isU' => '<span style="color:#0000bb;">$1</span>',
  28.  
  29. '/\[white\](.+)\[\/white\]/isU' => '<span style="color:#ffffff;">$1</span>',
  30.  
  31. '/\[size=([0-9]+)\](.+)\[\/size\]/isU' => '<span style="font-size:$1px;">$2</span>',
  32.  
  33. '#\[color=(\#[0-9A-F]{3,6}|[a-z\-]+)\](.*)\[/color\]#isU' => '<span style="color: \\1">\\2</span>',
  34.  
  35. '#\[align=(left|right|center)\](.*)\[/align\]#isU' => '<p style="text-align: \\1">\\2</p>');
  36.  
  37. return preg_replace(array_keys($bbcode), array_values($bbcode), $text);
  38.  
  39. }


нашел функцию,попробывал все работает..

вот ток не пойму '/\[i\](.+)\[\/i\]/isU' для чего "(.+)" нужно? Улыбка
 
 Top
Ammy
Отправлено: 11 Января, 2010 - 21:10:28
Post Id



Частый гость


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


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




Цитата:
вот ток не пойму '/\[i\](.+)\[\/i\]/isU' для чего "(.+)" нужно?


. - любой символ, кроме перевода строки;
+ - одно или более вхождений (этого любого символа);

Champion's Regexp
 
 Top
DimKA
Отправлено: 11 Января, 2010 - 21:15:30
Post Id


Новичок


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


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




Ammy и JustUserR спасиб!
 
 Top
JustUserR
Отправлено: 11 Января, 2010 - 22:05:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




DimKA Пожалуйста - но у вас опять допущена небольшая ошибка - надо заменить (.+) на (.+?) иначе текст между двумя тегами будет обрабатываться неправильно - читайте о жадных и нежадных квантификаторах


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DimKA
Отправлено: 11 Января, 2010 - 22:08:20
Post Id


Новичок


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


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




JustUserR Закатив глазки спасибо!

а вот как быть теперь со смайлами ? также как и с бб-кодами?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. function smile($text)
  2. {
  3.     $smile = array (
  4.  
  5.      '.lol.' => '<img src="http://site.com/lol.png">'
  6.  
  7.  
  8.     );
  9. return str_replace(array_keys($smile),array_values($smile),$text);
  10.    
  11. }


так можно? просто мне почему-то кажется что я что-то не учёл или сделал не правильно,так как видел функции намного сложнее чем моя )

(Отредактировано автором: 11 Января, 2010 - 22:49:50)

 
 Top
Gamer-X
Отправлено: 02 Сентября, 2012 - 20:21:10
Post Id



Новичок


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


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




а можете помочь с обратным "декодированием" html в bbcode? ну то есть, если я найду вот эти теги из данного массива, то чтобы обратно ббкоднуло?) я в регулярках пока не разбираюсь, самому сделать не получается
 
 Top
Jenni
Отправлено: 06 Июля, 2014 - 06:00:03
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2014  


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




Подскажите пожалуйста. вот у меня bb коды работают вот так.
PHP:
скопировать код в буфер обмена
  1. function apicms_bb_code($msg){
  2.   $msg = preg_replace('#\[big\](.*?)\[/big\]#si', '<big>\1</big>', $msg);
  3.   $msg = preg_replace('#\[b\](.*?)\[/b\]#si', '<b>\1</b>', $msg);
  4. return $msg; }

как мне сделать чтоб код вставки куска кода php подсвечивался и нумеровался. вот как здесь.
вторые сутки ищу решения сама но не выходит. решила обратиться. подскажите.

PHP:
скопировать код в буфер обмена
  1. $msg = html_entity_decode(trim($msg), ENT_QUOTES, 'UTF-8');
  2. $msg = substr($msg, 0,2) != "<?" ? "<?PHP \n" . $msg . "\n ?>" : $msg;
  3. $msg = highlight_string(stripslashes($msg), true);

пробывала так, но весь тест меняется, через if(){} не знаю как правильно составить.
 
 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