Перейти к контенту

Разрабатываем BB-тег [php] для IPB(2.3.*)


Рекомендуемые сообщения

Привет всем!

Идея создания этой темы была создано из-за того что я не нашел в инете этого мода для форума IPB.

Вобщем хочу разработать такой дополнительный BB-тег "php-код" Функция которого будет преобразовывать текст(php-код) в код токого вида:

Перемнные- одним цветом

Значение их - другим

Функции - третьим

Коментории - четвертым

 

Нарыл что инфа хранится в этих файлах

www\sait\forum\sources\classes\bbcode\

 

Нашел функцию подсветки синтаксиса php кода:

function highlight_code($php) 
{

 // если до этого $code обрабатывали функцией

 // htmlspecaialchars, здесь нужно дописать код, который отменяет ее действие



 $php = stripslashes($php);

 if(!strpos($php,"<?") && substr($php,0,2)!="<?") {

$php="<?php\n".trim($php)."\n?>";

 }  

 $php = trim($php);



 ob_start();
highlight_string($php, true);
return ob_get_contents();
ob_end_clean();

}

}

 

вставил ее сюда:

sources\classes\bbcode\class_bbcode_core.php

 

дабавил сам парсер для

 
[code]$txt = preg_replace_callback( "#\[php\](.+?)\[/php\]#is" , array( &$this, 'highlight_code' ), $txt );[/code]

 

сюда:

sources\classes\bbcode\class_bbcode.php

 

Но все равно не работает =((

При использовании [`php]тут мой код[`/php]

выводит пустое сообщение.

В чем проблема?

Ссылка на комментарий
Поделиться на других сайтах

А вы почитайте описание к моду подсветки из архива, и поймёте что это не так. Тем более, что настроить можно всё, было бы умение и желание.

 

:D

 

!strpos($php,"<?")

Мдя, RTFM.

 

Проблема в return, а точнее в его отсутствии.

Ссылка на комментарий
Поделиться на других сайтах

А вы почитайте описание к моду подсветки из архива, и поймёте что это не так. Тем более, что настроить можно всё, было бы умение и желание.

 

:D

 

!strpos($php,"<?")

Мдя, RTFM.

 

Проблема в return, а точнее в его отсутствии.

ПРобовал дажетакую функции:

function highlight_code($code) 
{

 // если до этого $code обрабатывали функцией

 // htmlspecaialchars, здесь нужно дописать код, который отменяет ее действие



 $code = stripslashes($code);

 if(!strpos($code,"<?") && substr($code,0,2)!="<?") {

$code="<?php\n".trim($code)."\n?>";

 }  

 $code = trim($code);



 return highlight_string($code,true);

}

при посте выводит вот так:

<?php

Array

?>

 

что не так?

 

По поводу уже готового мода,не стал копаться в нем, так как думаю это геморно, проще исправить мою ошибку))

Ссылка на комментарий
Поделиться на других сайтах

Darden, вы описании функции highlight_string() читали? Если вы передаёте вторым аргументом true, зачем вывод забираете? :D

 

  ob_start();
highlight_string($php, true);
return ob_get_contents();
ob_end_clean();

нафиг, сделайте просто

return highlight_string($php, true);

Ссылка на комментарий
Поделиться на других сайтах

Должно быть понятно, что проблема в том, что в $php - массив, потому все действия, которые вы делаете с $php нужно делать с одним из его элементов. выведите его на страницу и посмотрите, с каким именно. если не хочется так, можно почитать описание preg_replace, там сказано что и в каком порядке лежит в этом массиве.
Ссылка на комментарий
Поделиться на других сайтах

>выведите его на страницу и посмотрите

print_r($array);//одна из самых не заменимых функций в php, при выводе можно еще добавить теги <pre>...</pre> но я ими не пользуюсь.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

ниче не помогает, попробовал так:

function highlight_code($php) 
{

return highlight_string("<?php\n".trim(stripslashes($php))."\n?>",true);

 

все равно выводит

<?php
Array
?>

Ссылка на комментарий
Поделиться на других сайтах

Перечитайте первые 30 букв из сообщения #12. Внимательно.
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.