Darden Опубликовано 16 Апреля 2009 Жалоба Поделиться Опубликовано 16 Апреля 2009 Привет всем!Идея создания этой темы была создано из-за того что я не нашел в инете этого мода для форума 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]выводит пустое сообщение.В чем проблема? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 в том, что моды подсветки уже есть Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Darden Опубликовано 17 Апреля 2009 Автор Жалоба Поделиться Опубликовано 17 Апреля 2009 в том, что моды подсветки уже естьмне нужен исключительно для пхп кода, а такого я не находил Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 А вы почитайте описание к моду подсветки из архива, и поймёте что это не так. Тем более, что настроить можно всё, было бы умение и желание. !strpos($php,"<?")Мдя, RTFM. Проблема в return, а точнее в его отсутствии. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Darden Опубликовано 17 Апреля 2009 Автор Жалоба Поделиться Опубликовано 17 Апреля 2009 А вы почитайте описание к моду подсветки из архива, и поймёте что это не так. Тем более, что настроить можно всё, было бы умение и желание. !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); } при посте выводит вот так:<?phpArray?> что не так? По поводу уже готового мода,не стал копаться в нем, так как думаю это геморно, проще исправить мою ошибку)) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 Я пробовал писать подсветку синтаксиса на "однушку", но глюкависто вышло. Вот код:php.txt Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 Darden, вы описании функции highlight_string() читали? Если вы передаёте вторым аргументом true, зачем вывод забираете? ob_start(); highlight_string($php, true); return ob_get_contents(); ob_end_clean();нафиг, сделайте простоreturn highlight_string($php, true); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Darden Опубликовано 17 Апреля 2009 Автор Жалоба Поделиться Опубликовано 17 Апреля 2009 нафиг, сделайте простоreturn highlight_string($php, true); делал, как писал выше выводит вот это:<?phpArray?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 return highlight_string("<?php\n".trim(stripslashes($php))."\n?>",true); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 return highlight_string($code[1],true); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Darden Опубликовано 17 Апреля 2009 Автор Жалоба Поделиться Опубликовано 17 Апреля 2009 return highlight_string($code[1],true); ни как не получается, выложите плиз весь код Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 17 Апреля 2009 Жалоба Поделиться Опубликовано 17 Апреля 2009 Должно быть понятно, что проблема в том, что в $php - массив, потому все действия, которые вы делаете с $php нужно делать с одним из его элементов. выведите его на страницу и посмотрите, с каким именно. если не хочется так, можно почитать описание preg_replace, там сказано что и в каком порядке лежит в этом массиве. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Serenity Опубликовано 18 Апреля 2009 Жалоба Поделиться Опубликовано 18 Апреля 2009 >выведите его на страницу и посмотритеprint_r($array);//одна из самых не заменимых функций в php, при выводе можно еще добавить теги <pre>...</pre> но я ими не пользуюсь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Darden Опубликовано 30 Апреля 2009 Автор Жалоба Поделиться Опубликовано 30 Апреля 2009 ниче не помогает, попробовал так:function highlight_code($php) { return highlight_string("<?php\n".trim(stripslashes($php))."\n?>",true); все равно выводит<?php Array ?> Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 30 Апреля 2009 Жалоба Поделиться Опубликовано 30 Апреля 2009 Перечитайте первые 30 букв из сообщения #12. Внимательно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.