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

Разрабатываем 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. Внимательно.
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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