За последние 24 часа нас посетил 36431 программист и 1495 роботов. Сейчас ищут 1209 программистов ...

GeSHi (подсветка кода)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Jensi, 10 июл 2009.

  1. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Скачать и т.д. можно тут: http://xbb.uz/geshi_php_html_css_javascript.html
    Документация по GeSHi: http://xbb.uz/public/geshi.html

    В итоге, как можно прикрутить GeSHi к сайту? А именно, производится выборка из БД, имеется текст с кодом, а GeSHi может подсвечивать только определённую переменную, а мне нужно только код во всех текстах О_о
    После запроса к БД, подставил переменную, которая выводит текст и подсветилось абсолютно всё, даже HTML в исходном коде вылез наружу.
    Можно ли подсветку реализовать с GeSHi или чем-то другим лучше? Не очень хочется использовать JS, т.к. он будет нагружать браузер юзера:(
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
  3. kostyl

    kostyl Guest

    можно организовать. Я ей пользуюсь. Все сразу подсвечивать не умеет. Только указанный синтаксис.
    А GeSHi тоже не легковес. Например 200 кб скрипт на обычном серваке(ну все относительно конечно) вылетает по таймауту...
     
  4. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Elkaz, спасибо за ссылку, там на PHP твой типограф:)
     
  5. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Jensi
    Проект Sergey89. Я просто там храню все свои исходные коды, т.к это удобнее.
    Потом пишу у себя на сайте статью и просто выкладываю ссылку на codepaste.ru. Удобно для меня лично. Не заморачиваюсь по поводу подсветки.

    З.ы
    Может быть сделаю div/iframe с file_get_contents :)
     
  6. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    жаль, что нельзя подсвечивать после вывода из БД куски кода, может я чёт смогу накодить, чтоб это исправить:)
    Elkaz, проект хороший, но не понятен будет для новичка в программировании:)
    Мне у тя на страничке больше понравилось чёт...
    Stop flood!
     
  7. kostyl

    kostyl Guest

    Почему это нельзя? Чето я не пойму...
     
  8. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    О_о, а как тогда сделать, чтоб при выводе из БД подсвечивался только код, а не все теги и в тексте и в коде?
    У меня наверное мозгов не хватило или просто лень думать:)
     
  9. kostyl

    kostyl Guest

    Jensi
    Посмотри у меня на сайте - статья. Вся храниться в базе. Подсвечиваются только определенные места - места с кодом.
    Так ты хочешь?
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    ??
    И весь текст - ссылка

    *SHOCKED*
     
  11. kostyl

    kostyl Guest

    Ну это, чтобы точно попасть... :)
    Тебя смущает валидность?
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Нет, меня смущает юзабилити. Хотел выделить слово, которое обрубилось на половине скриптом для подготовки анонсов, а получил переход.
     
  13. kostyl

    kostyl Guest

    Тююю....
    А зачем тебе выделять это слово??? :) (кстати, я выделяю без перехода).
    Я доделать хотел времени нету - чтобы анонсы определялись на этапе написания. Тобишь с помощью bb-кодов. Скоро сделаю и будет все ок.
     
  14. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Да, именно так и нужно сделать:)

    p.s.: kostyl, цвет ссылок немного не тот, темнее сделай
     
  15. kostyl

    kostyl Guest

    Jensi
    Ну я делал с помощью bb-кодов. Пишеться текст и в месте где Geshi должна подстветить код вставляется bb-код
    Код ( (Unknown Language)):
    1.  тут идет листинг программы
    закрываем bb-код. Потом все это в таком виде сохраняется в базу. А вот при выводе обрабатывается - парситься, выбирается текст который заключен в bb-коды code, определяется название языка, инстанцируется класс Geshi и передается ей название и сам текст. И потом это прибавляется к исходному тексту, естественно уже без bb-кодов. Все это парсит конечный автомат с фабрикой bb-классов. BB-классы делятся на те, которые имеют содержание и которые не имеют. Класс bb-кода
    Код (Text):
    1.  имеет содержание, поэтому он может обрабатываться Geshi.
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    лучше при сохранении парсить
     
  17. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    preg_replace_callback
     
  18. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    kostyl, уже не покатит, у меня на сайте более 1200 статей и в них нужно подсветить код, а при добавлении я смогу сделать, только смысла практически нету:(
     
  19. CocoChanels

    CocoChanels Guest

    GeSHi ïîäñâåòêà êîäà

    Íó âñòàâëÿþ ÿ ÷åðåç include ÷àñòü êîäà èç ïåðåìåííîé. Âîò â ýòîì êîäå åñòü html-êîä ññûëêè. Åãî íàäî óáðàòü, à îñòàâèòü òîëüêî òåêñò, ïîíÿòíî?
    Ïðè÷åì íå ãîâîðèòå, ÷îòáû ÿ çàìåíèë êîä â ïåðåìåííîé, îíà ÷èòàåò êîä ñ îäíîãî íîâîñòíîãî ïîðòàëà
     
  20. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    все данные, пришедшие от пользователя нужно хранить как есть
     
  21. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Если использовать GESHI, то лучше подсвечивать при сохранении, но вставлять в ячейку рядом с оригиналом. Иначе получится бяка :)
     
  22. kostyl

    kostyl Guest

    я парсю один раз при показе, сохраняя в кешь. Не знаю лушче ли сохранять в кешь и соответсвенно парсить при сохранении? Но то что в базе должны храниться исходники - так оно и есть.
     
  23. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    А как при сохранении сделать? Т.е. есть текст, а в нём ещё и код, обрамленный в теги [code*][*/code]
     
  24. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Вот пример:

     
  25. Jensi

    Jensi Активный пользователь

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Ну помогите кто-то:((