Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2 3

Реализация расширения ББ кодов

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#1
 1 
 2 
<?php $html preg_replace("#\[code\](.+)\[\/code\]#isU"'<br/><div style="width: 80%; margin-left: 7px;"><div id="codetop">Код: </div><div id="code">\\1</div></div>'$html);?>

Как сделать столбец с номерами строк и подсветку синтаксиса?
Разметкой кода можно пренебречь. Скорее всего нужно, ведь лучше таблицой делать?

Отредактировано автором 15 Мар 2011

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#2
ну подсветка пхп кода лучше всего делается родной функцией самого пхп highlight_string();

А номера строк можно добавить уже потом. Например перебирая строки и добавляя перед ними номер.

Добавлено 2011.03.16 14-20

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
<?php /**
     * @param string $str
     * @return string 
     *
     * highlight php string 
     */
    
public function highlight_php_string($str) {
        
$str highlight_string($strtrue);
        
        
$cnt 1;
        if (
preg_match_all('#(<br />)#iu'$str$count)) {
            
$cnt count($count[1]);
        }

        
$box '<div style="width:35px; float:left; padding-right:5px; text-align: right;" ><code>';
        for (
$i 1$i < ($cnt 2); $i++) {
            
$box .= '&nbsp;' $i '&nbsp;<br />';
        }
        
$box .= '</code></div>';
        
        
$str $box '<div style="margin-left:40px;">' $str '</div>';
        
        return 
$str;
    }
?>

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#3
А теперь поясни) + Как ты реализовывал переход строк? Автодобавлением бр? Как это сделать) А то я просто вайт спейсом)

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#4
там предварительно заменяються \n на <br /> вот и весь переход строк))

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#5
эээ. \n откуда брать?)

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#6
skad0, это стандартный символ перевода строки в си-подобных языках.

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#7
Это то понятно. Я говорю о том, что юзер, заполняя форму, не вводит \n

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#8
skad0, он нажимает клавишу "ввод", которая вставляет символ перевода строки. Иногда символ перевода строки и символ возврата коретки.

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#9
Если бы он вставлял символ автоматом, тогда в базе бы появились \n они не появляются О_О

Добавлено 2011.03.16 21-12

C \n понял. Сенкс

Добавлено 2011.03.16 21-13

Теперь поясните как мне реализовать эту функцию в ББ коде.

Добавлено 2011.03.16 21-13

 1 
 2 
<?php $html preg_replace("#\[code\](.+)\[\/code\]#isU"'<br/><div style="width: 80%; margin-left: 7px;"><div id="codetop">Код: </div><div id="code">\\1</div></div>'$html);?>

Или поясните как реализовать по другому) Есть же наверное способы?)

Отредактировано автором 16 Мар 2011

Wasja

  • Истенный Атомовод
  • Юзер
  • 397
  • Репутация:19 
  • Предупреждения: 0 
  • Регистрация:
    11 Ноя 2010
#10
skad0, заменяет открывающий и закрывающий BB-код code на соотвествующие html конструкции. По простому это делается так (хотя и не совсем верно, поскольку не отслеживается использование других BB-кодов внутри конструкции):

 1 
 2 
<?php $html str_replace('[code]''<br/><div style="width: 80%; margin-left: 7px;"><div id="codetop">Код: </div><div id="code">'$html);
$html str_replace('[/code]''</div></div>'$html);?>

Отредактировано автором 17 Мар 2011
1 2 3
Сейчас online: 117. Зарегистрированных: 0. Гостей: 117.