BB КОД *CODE*
1.
Андрей (11.03.2012 / 20:20)
всем,привет. Подскажите пожалуйста как сделать BB код, для строчек программного кода. Для steamcore если кто умеет.пожалуйста
подскажите наиболее простой и красивый способ. И обьясните пожалуйста что и куда ставить. . . А то не силен еще. . . Огромная просьба писать только по теме. Заранее благодарю
2.
mix (11.03.2012 / 20:27)
0xWebster (11 Марта 2012 / 20:20)
всем,привет. Подскажите пожалуйста как сделать BB код, для строчек программного кода. Для steamcore если кто умеет.пожалуйста подскажите наиболее простой и красивый способ. И обьясните пожалуйста что и куда ставить. . . А то не силен еще. . . Огромная просьба писать только по теме. Заранее благодарю
можно с пабличных скриптов сдернуть. как вариант
3.
Андрей (11.03.2012 / 21:07)
например?
пишите пожалуйста подробней . Я только учусь.
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",'<'=>'<','>'=>'>','&'=>'&','$'=>'$','"'=>'"','''=>"'",'\'=>'`','%'=>'%','^'=>'^'));
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('|( {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/\?\.\~&_=/%-:#]*)~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 . После других функций бб кодов. И все будет работать??
больше ничего не надо? Или еще что то?
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';
}
так?
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)
ну так что?
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 сек.
хех)
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/\?\.\~&_=/%-:#]*)~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