[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подсветка кода на форуме
Страницы: 1, 2, 3, 4, 5, 6, 7
kirik
Гм.. у меня на предпросмотре тоже экранируется: $header = "MIME-Version: 1.0\\n";
FatCat
"\n"
Ну конечно же!!!
INSERT INTO ibf_posts (author_id,use_sig,use_emo,ip_address,post_date,icon_id,post,author_name,forum_id,topic_id,queued,attach_id,attach_hits,attach_type,attach_file,new_topic) VALUES ('1','1','1','127.0.0.1','1257447072','0',' <pre class="sh_sourceCode" rel="php"><span class="sh_string">&quot;</span><span class="sh_escape">\n</span><span class="sh_string">&quot;</span></pre> ','FatCat','3','22442','0','','','','','1')

_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
Надо раскрашенную обратную слешь преобразовывать в метасимвол перед вбиванием в базу...

_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
Йес!
Вроде бы все получилось небольшой правкой:
return '<pre class="sh_sourceCode" rel="'.$lng.'">'.str_replace("\\","& #092;",SHPHP::highlight($code, $language)).'</pre>';


_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
Теперь еще одна проблема:
Ввожу &#036;
Подсвечивальщик делает %...
Форум, кстати, тоже это делает...

_____________
Бесплатному сыру в дырки не заглядывают...
kirik
FatCat
Да! Круто!) Теперь все как надо!


Цитата (FatCat @ 5.11.2009 - 15:01)
Теперь еще одна проблема:
Ввожу & #036;
Подсвечивальщик делает %...
Форум, кстати, тоже это делает...

Так это из-за тех преобразований в файле sh_functions.php, функция highlighter($code, $lng) - самое начало. А не.. похоже это сам форум сначала преобразовывает, потому что даже в обычном тексте заменяется.. Может стоит в самом начале заменять амперсанды на &amp ;, чтобы не преобразовывались сущности, которые ввели вручную..?
kirik
Цитата (kirik @ 5.11.2009 - 13:08)
Для меня: сделать подсветку строк, заключенных в кавычки (css: url('test'))

FatCat, обнови пожалуйста 2 языковых файла (прикрепил). В папке /langs/ они лежать должны.


UPD
Еще будет здорово, если получится убрать парсинг смайликов из блоков кода, а то как-то некрасиво выходит иногда, пишешь цикл, а он тебе улыбается в ответ smile.gif

UPD2
Еще, файл sh_functions.php, функция highlighter($code, $lng), добавь пожалуйста в массив $convert еще пару для преобразования:
// меняем табы на 4 пробела
"\t" => ' ',
twin
И еще некошерные дескрипторы бы заменить автоматом. <? на <?php

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
kirik
Цитата (twin @ 6.11.2009 - 00:38)
И еще некошерные дескрипторы бы заменить автоматом.

Думаю не стоит.. это уж пусть будет как запостили. Хотя это можно повесить уже на форматтер кода smile.gif
FatCat
Цитата (kirik @ 6.11.2009 - 01:49)
обнови пожалуйста 2 языковых файла (прикрепил).
Цитата (kirik @ 6.11.2009 - 01:49)
добавь пожалуйста в массив $convert еще пару для преобразования

Сделал.


Цитата (kirik @ 6.11.2009 - 01:23)
похоже это сам форум сначала преобразовывает, потому что даже в обычном тексте заменяется.. Может стоит в самом начале заменять амперсанды на &amp ;, чтобы не преобразовывались сущности, которые ввели вручную..?

Поищу, на каком этапе это происходит...

_____________
Бесплатному сыру в дырки не заглядывают...
FatCat
Не нашел пока глюк с вводом метасимволов, но выявил и устранил конфликт с кодами форума:
	$tags = array(
'/<span class="sh_(?:[^"]+)">/',
'#</span>#'
);
$txt = preg_replace($tags, null, $txt);

Это убило все закрывающие спаны, в том числе от других кодов.

Заменил регулярку:
$txt = preg_replace( '#(<span class="sh_(?:[^"]+)">)(.+?)(</span>)#is', "\\2", $txt );


_____________
Бесплатному сыру в дырки не заглядывают...
kirik
Цитата (FatCat @ 6.11.2009 - 05:56)
Сделал.

Спасибо!

Цитата (FatCat @ 6.11.2009 - 09:25)
Заменил регулярку

А зачем там сами тэги в скобках? Я думаю лучше убрать - оптимальнее будет (они ведь все равно нигде не используются).
Семён
Зачем изобретать колесо? Тут верно подметил Joker, GESHI самый лучший вариант подсветки кода, правда его нужно чуток подлатаь + делать умный кеш.

На своём стареньком тестовом блоге, прикрутил вообще JS подсветку.
ПРИМЕР
FatCat
Цитата (Семён @ 7.11.2009 - 11:52)
Тут верно подметил Joker, GESHI самый лучший вариант подсветки кода

Попробуй встроить гешу в форум со всеми форумными подменами символов при вводе и редактировании - и окажется, что проще с нуля новый подсвечивальщик писать, чем гешу использовать...

_____________
Бесплатному сыру в дырки не заглядывают...
kirik
Семён
Геши нифига не гибкий.. И когда я писал этот подсвечивальщик я не изобретал колесо, а просто сверлил новые дырки, чтобы оно подошло к php - это php порт GNU syntax highlighter'а.
А JS подсветка да, прикольно. Если ты сначала трэд почитаешь, то там предлагается сделать JS, но ты прикинь сколько ресурсов эта подсветка будет есть у юзера при наличии хотя бы пары-тройки больших листнингов кода на странице.. а если еще и несколько страниц отроешь - мой ноут так вообще повесиццо smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.