BB КОД *CODE*

1. Андрей (11.03.2012 / 20:20)
всем,привет. Подскажите пожалуйста как сделать BB код, для строчек программного кода. Для steamcore если кто умеет.пожалуйста smile подскажите наиболее простой и красивый способ. И обьясните пожалуйста что и куда ставить. . . А то не силен еще. . . Огромная просьба писать только по теме. Заранее благодарю smile

2. mix (11.03.2012 / 20:27)
0xWebster (11 Марта 2012 / 20:20)
всем,привет. Подскажите пожалуйста как сделать BB код, для строчек программного кода. Для steamcore если кто умеет.пожалуйста smile подскажите наиболее простой и красивый способ. И обьясните пожалуйста что и куда ставить. . . А то не силен еще. . . Огромная просьба писать только по теме. Заранее благодарю smile
можно с пабличных скриптов сдернуть. как вариант

3. Андрей (11.03.2012 / 21:07)
например?smile
пишите пожалуйста подробней . Я только учусь.

4. ramzes (11.03.2012 / 21:10)
echo higlight_string('<?php echo \' hello\'; ?>');

5. Андрей (11.03.2012 / 21:36)
4. ramzes, спасибо.)
я так понял это элементарный способ? А как сделать чтоб при вводе [код]бла бла бла[/код] сразу срабатывал этот код echo
higlight_string('<?php echo \' hello
\'; ?>');

6. ramzes (11.03.2012 / 21:41)
Дома буду напишу пару ббкодов, с сенсора писать неудобно

7. Андрей (11.03.2012 / 21:42)
4. ramzes, может быть highlight_string() ? ? ? А не higlight_string()

8. ramzes (11.03.2012 / 21:43)
7. 0xWebster, ну я ж говорю, с тела)) ошибки делаю, пардон

9. Андрей (11.03.2012 / 21:43)
6. ramzes, хорошо спасибо. Буду ждать)

10. ramzes (11.03.2012 / 23:00)
<?
// ------   Функция правильной подсветки кода ------- //
function highlight_code($code){
$code = strtr($code,array('<br />'=>"\r\n",'[br]'=>"\r\n",'<br/>'=>"\r\n",'<'=>'<','>'=>'>','&amp;'=>'&','$'=>'$','"'=>'"','''=>"'",'\'=>'`','%'=>'%','^'=>'^'));
if(!strpos($code,'<?') && substr($code,0,2)!='<?'){
$code="<?php\r\n".trim($code);
}
$code = highlight_string($code,true);
$code = strtr($code,array('<br />'=>"\r\n",'[br]'=>"\r\n",'<br/>'=>"\r\n"));
$code = preg_replace('|(&nbsp;{2,})|', "\r\n\1", $code);
        $codeline = explode("\r\n", $code);
              foreach ($codeline as $line => $string){
                    if($string!=''){
         $ret.='<div style="display:inline-block; width:28px; color:#666">'.($line+1).'</div> '.trim($string).'<br />';
                    }
              }
        $code = $ret; 
$code = strtr($code,array('$'=>'$',"'"=>''','`'=>'\','%'=>'%','^'=>'^'));
$code = preg_replace('|($[a-z\d_]+)|i','<span style="color:#837731">\1</span>',$code);
return '<div class="php">'.$code.'</div>';
}
?>


11. ramzes (11.03.2012 / 23:01)
<?
//--- функция обработки Url ---//
function url_replace($m){
  if(!isset($m[3])){
          if(preg_match('|^http:\/\/'.$_SERVER['HTTP_HOST'].'|si',$m[1])){
return '<a href="'.$m[1].'">'.$m[2].'</a>';
           }else{
 return '<a href="'.$m[1].'"target="_blank">'.$m[2].'</a>';
           
    }
    
  }else{
$m[4] = (mb_strlen($m[3], 'utf-8')>70)  ? mb_substr($m[3], 0, 35, 'utf-8').'...'.mb_substr($m[3], -15, 15, 'utf-8') : $m[3];
    
          if(preg_match('|^http:\/\/'.$_SERVER['HTTP_HOST'].'|si',$m[3])){
return '<a href="'.$m[3].'">'.$m[4].'</a>';
          }else{
return '<a href="'.$m[3].'" target="_blank">'.$m[4].'</a><';
          }
    
  }
  
}

?>

Добавлено через 01:27 сек.
<?
// ------- BB Code ------- //
function bb($str){
   $str = preg_replace('#\[code\](.*?)\[/code\]#sie', 'highlight_code("\1")', $str);
   $str = preg_replace_callback('~\\[url=(https?://.+?)\\](.+?)\\[/url\\]|(https?://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~i', 'url_replace', $str);
}

?>
использовать так
<?
echo bb($text);
 ?>


12. Дмитрий (11.03.2012 / 23:09)
А кто знает, как при помощи Geshi сделать подсветку синтаксиса?

13. Андрей (11.03.2012 / 23:11)
попробую, спасибо

14. Абдула (11.03.2012 / 23:34)
Самый простои способ для bb кодов это str_replace() и preg_replace(). А то он говорит учится, а ты сразу скрипты тут пишешь врядли поймет. И еще. Прежде чем использовать preg_replace() выучи "Регулярные Выражения". А то ничего не поймешь.

15. Андрей (11.03.2012 / 23:38)
14: Странный, ага, жаль пишется так - preg_replace()

16. Абдула (11.03.2012 / 23:40)
Простой пример.
$text = str_replace('[b]', '<b>', '$text');
$text = str_replace('[/b]', '</b>', '$text');


17. ramzes (11.03.2012 / 23:46)
Странный (11 Марта 2012 / 23:40)
Простой пример.
[php]
$text = str_replace('[b]', '<b>', '$text');
$text = str_replace('[/ b]', '</b>', '$text');
[/php]
плохой пример. такое надо делать регулярками и только ими
иначе тебе так страницы изурoдуют без проверки на закрытие тега

18. Абдула (11.03.2012 / 23:47)
А что это она bb код обрабатывает.

Добавлено через 03:46 сек.
ramzes (11 Марта 2012 / 23:46)
плохой пример. такое надо делать регулярками и только ими
иначе тебе так страницы изурoдуют без проверки на закрытие тега

да ты прав могут из***овать. Но это просто пример, чтоб знал в чем суть заключена.
Например я когда начинал учил думал это что то сложное, совсем не думал что так делается. Когда увидел эти функции и узнал, что суть в топ чтобы заменить одни символы на другие, то понял все.

19. Андрей (12.03.2012 / 09:36)
возник вопрос, функция ббкодов идет так
{
$bbcode = array(
'~\[url=(.*?)?\](.*?)\[\/url\]~si' => '<a href="$1" target="_blank">$2</a>',
'~\[img=(.*?)\](.*?)\[\/img\]~si' => '<img src="$1" alt="$2" />',
'/\[b\](.+)\[\/b\]/isU' => '<b>$1</b>',
'/\[u\](.+)\[\/u\]/isU' => '<span style="text-decoration:underline;">$1</span>',
'/\[s\](.+)\[\/s\]/isU' => '<s>$1</s>',

мне как лучше добавить ?

Добавлено через 01:50 сек.
просто боюсь новую функцию обьявлять...

Добавлено через 09:07 сек.
это только часть кода

20. Абдула (12.03.2012 / 09:52)
Что ты боишься. Сделай функцию и обработай им вывод сообщения

И еще. Зайди на http://php.su. Сделай поиск Регулярные выражения и preg_replace. Выучи обе штуки наизусть. Тогда поймешь как сделать bb коды. Лучше что то свое и понятное, чем что то чужое и не понятное.

21. Павел (12.03.2012 / 10:21)
Странный (12 Марта 2012 / 13:52)
Что ты боишься. Сделай функцию и обработай им вывод сообщения

И еще. Зайди на http://php.su. Сделай поиск Регулярные выражения и preg_replace. Выучи обе штуки наизусть. Тогда поймешь как сделать bb коды. Лучше что то свое и понятное, чем что то чужое и не понятное.
не знаю, не знаю. в чужом разобраться можно, это плюс. да и зачем изобретать велосипед если за тебя это сделали. вставь да юзай.

22. Абдула (12.03.2012 / 10:27)
можно копаться в чужом коде, если в этом разбираешься. Это еще и к лучшему. Но не зная регулярные выражения, Он ничего не поймет в чужом коде. Но велосипед тоже можно изобрести, если он лучше прежнего.

23. Андрей (12.03.2012 / 10:29)
а если так?
function bb($str){
 $str = preg_replace
 ('#\[code\](.*?)\[/
 code
 \]#sie', 'highlight_code
 ("\1")', $str); 
 }
и все это в файле system.php . После других функций бб кодов. И все будет работать?? smile больше ничего не надо? Или еще что то?

24. Абдула (12.03.2012 / 10:34)
return где?

25. Андрей (12.03.2012 / 10:41)
ой, забыл
function bb($str){
 $str = preg_replace
 ('#\[code\](.*?)\[/
 code
 \]#sie', 'highlight_code
 ("\1")', $str); 
return '$str';
 }
так? smile

26. Абдула (12.03.2012 / 10:46)
без кавычек

27. Андрей (12.03.2012 / 11:10)
function bb($str){
$str = preg_replace
('#\[code\](.*?)\[/
code
\]#sie', 'highlight_code
("\1")', $str);
return $str;
}

28. Андрей (12.03.2012 / 11:26)
не робит

29. Андрей (12.03.2012 / 12:08)
мб еще что то где то забыл?

30. Абдула (12.03.2012 / 12:41)
А это вообще код для чего. Первый раз такой вижу. preg_replace ищет совпадения в тексте и заменяет их на те которые ты написал. highlight_code() это я не знаю что такое. дома буду я тебе скину bb коды на preg_replace. А то шас в школе голова кипит.

31. Андрей (12.03.2012 / 12:48)
30. Странный, highlight_code() это делает код цветным. Хорошо, буду ждать) ты в каком классе учишься? Я в 11 ) ппц экзамены скоро...)

32. Александр (12.03.2012 / 13:08)
не \1 а \$1

33. Андрей (12.03.2012 / 13:14)
щас попробую спасибо)

34. Андрей (12.03.2012 / 14:08)
ааа.. я вообще повешусь скоро...попробовал подогнать под уже готовую функцию. . . Вылезла ошибка. Ша функцию скину, мб кто подгонит ?)

Добавлено через 02:47 сек.
function message($var)
{
if (!empty($var)) echo '<div class="message">'. $var .'</div>';
}

// обработка bb кодов
function bbcode($str)
{
$bbcode = array(
'~\[url=(.*?)?\](.*?)\[\/url\]~si' => '<a href="$1" target="_blank">$2</a>',
'~\[img=(.*?)\](.*?)\[\/img\]~si' => '<img src="$1" alt="$2" />',
'/\[b\](.+)\[\/b\]/isU' => '<b>$1</b>',
'/\[u\](.+)\[\/u\]/isU' => '<span style="text-decoration:underline;">$1</span>',
'/\[s\](.+)\[\/s\]/isU' => '<s>$1</s>',
'/\[i\](.+)\[\/i\]/isU' => '<i>$1</i>',

Добавлено через 03:25 сек.
'/\[br\](.+)/isU' =>'<br />$1',
'/\[hr\](.+)/isU' => '<hr />$1',
'/\[big\](.+)\[\/big\]/isU' => '<span style="font-size:large;">$1</span>',
'/\[small\](.+)\[\/small\]/isU' => '<span style="font-size:small;">$1</span>',
'/\[red\](.+)\[\/red\]/isU' => '<span style="color:#ff0000;">$1</span>',
'/\[yellow\](.+)\[\/yellow\]/isU' => '<span style="color:#ffff22;">$1</span>',
'/\[green\](.+)\[\/green\]/isU' => '<span style="color:#00bb00;">$1</span>',
'/\[blue\](.+)\[\/blue\]/isU' => '<span style="color:#0000bb;">$1</span>',
'/\[white\](.+)\[\/white\]/isU' => '<span style="color:#fff;">$1</span>',
'/\[color=(.+)\](.+)\[\/color\]/isU' => '<span style="color:#$1;">$2</span>',
'/\[q\](.+)\[\/q\]/isU' => '<div class="q">Цитата: "$1"</div>',
'/\[size=([0-9]+)\](.+)\[\/size\]/isU' => '<span style="font-size:$1px;">$2</span>',
);

35. Андрей (12.03.2012 / 14:12)
$str = preg_replace(array_keys($bbcode), array_values($bbcode), $str); // заменяем коды на теги

return $str;
}

ну так вот идут бб коды

36. Андрей (12.03.2012 / 17:38)
ну так что?smile

37. Андрей (13.03.2012 / 07:54)
помогите...

38. Абдула (13.03.2012 / 08:26)
Вай блин. Забыл. Ша посмотрю тут в телефоне должен быть один bb код. Если найду напишу.

39. Абдула (13.03.2012 / 08:37)
$bbcode = preg_replace('/\[url\s?=\s?([\'"]?)(?:http:\/\/)?([a-z0-9-.]+\.\w{2,4})\1\](.*?)\[\/url\]/', "<a href=\"http://$2\">$3</a>", $bbcode); 


40. Андрей (13.03.2012 / 09:44)
39. Странный, так нафига мне ссылка?

Добавлено через 01:59 сек.
D хех)

41. Абдула (13.03.2012 / 09:50)
А что надо то?

42. Абдула (13.03.2012 / 10:10)
На твой вопрос ramzes ответил так

Добавлено через 01:27 сек.
<?
// ------- BB Code ------- //
function bb($str){   
$str = preg_replace('#\[code\](.*?)\[/code\]#sie', 'highlight_code("\1")', $str);
$str = preg_replace_callback('~\\[url=(https?://.+?)\\](.+?)\\[/url\\]|(https?://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~i', 'url_replace', $str);
return $str;
}
?>


43. Андрей (13.03.2012 / 10:17)
надо чтоб можно было пхп код вставлять красиво.

Добавлено через 00:42 сек.
[code]

44. Абдула (13.03.2012 / 10:27)
Выше же написал.
Красиво это как? Разными цветами?

45. Андрей (13.03.2012 / 10:44)
короче сделал так. Получилось норм но только не цветное(
'/\[code\](.+)\[\/code\]/isU' =>
'<code>$1</code>', 


46. Абдула (13.03.2012 / 10:46)
первый раз вижу такие теги. Эт че? Html 5?

47. Андрей (13.03.2012 / 10:53)
точно не знаю. Утверждать не буду. Но у меня работает.. )

48. Андрей (13.03.2012 / 12:36)
вот линк если что. http://life-xakep.ru
там на форе видно как получилось

URL: https://visavi.net/topics/30407