За последние 24 часа нас посетили 17799 программистов и 1614 роботов. Сейчас ищут 1453 программиста ...

true BBcode Функция подсветки PHP-синтаксиса

Тема в разделе "Решения, алгоритмы", создана пользователем Hight, 21 ноя 2008.

  1. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    // Подсветка синтаксиса PHP |
    PHP:
    1.  
    function php_bbcode($text)
    {
    $text = preg_replace_callback('#\[php\](.*?)\[/php\]#si',
    create_function('$matches', '
    $matches[1] = htmlspecialchars_decode($matches[1]);
    $matches[1] = (stripos($matches[1], "<?php") === false)? "<?php \r\n".$matches[1] : $matches[1];
    $matches[1] = highlight_string($matches[1], 1);

    $br_num = substr_count($matches[1], "<br />");

    $numeric[] = "<table cellpadding=\"0px\" cellspacing=\"0px\" border=\"0\"><tr><td style=\"font-size:13px; border-right:#999999 dashed 1px; padding-right:5px; font-family:\'Courier New\', Courier, monospace; text-align:right; vertical-align:top;\">";

    for($i=1; $i<=$br_num + 1; $i++)
    {
    $numeric[] = $i."<br />";
    }

    $numeric[] = "</td><td style=\"font-size:13px; padding-left:3px; vertical-align:top; white-space:nowrap;\">".$matches[1];

    $numeric[] = "</td></tr></table>";

    $matches[1] = implode("", $numeric);

    $result = "<div style=\"border:#999999 dashed 1px; margin: 5px 20px 5px 20px; padding:5px;\"><a href=\"http://www.php.net\" target=\"_blank\" style=\"color:#333333; font-weight:bold;\">PHP</a><br /><br />".$matches[1]."</div>";

    return $result;'),
    $text);

    return $text;
    }




    ------------------------------
    Отключил BB коды в сообщении
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. require_once './geshi/geshi.php';
    3.  
    4. $geshi = new GeSHi($code, 'php');
    5. $geshi->set_header_type(GESHI_HEADER_NONE);
    6. $geshi->set_tab_width(4);
    7. $geshi->enable_keyword_links(false);
    8. print $geshi->parse_code();
    Я по старинке 8)
     
  3. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
  4. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    во-первЫх: хорошо б вывести стили в css, что б человеку было удобно изменить цветовую мурню.
    во=втОрых - хорошо б сделать ссылки на мануалы по ф-циям.

    то есть пишу:
    print_r($someVar);
    прербразовывает в <a href="php.net/print_r">print_r</a>($someVar);
     
  5. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Согласен, было бы прикольно.
    Сделай :)
     
  6. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    чорд. Ну в css вывести - легко. А вот со ссылками посложней. Нужно составнять некое множество ф-ций, например
    ('var_dump', 'implode', 'sprintf'). Это нужно для того, чтобы в ссылки не преврыщались всякие myFunk, которых ессно в man php нет. Наверно будет тормозить. Может попробую.
     
  7. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Если кто-нибудь составит список функций, то сделать не проблема. Список функций можно на php.net намыть ;)
    На 486 будет :)
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я пытался сделать грамотную подсветку, но так и не получилось. Хотел сделать вариацию PHP + HTML + CSS + SQL + JAVASCRIPT (чтобы поставить тег [webcode] и подсвечивалась эта смесь).
     
  9. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Так можно сделать. Но в любом случае надо, чтобы в коде были какие-то флаги, ограничивающие тот или иной язык.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ну естественно:
    <script>
    <style>
    <?
    SELECT

    -----------
    style=""
    onclick=""
     
  11. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Kreker
    Посмотри pear коллекцию. Там всё это есть.
     
  12. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Hight
    А зачем тогда ты занимашься этим?
     
  13. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    А мне не нравятся решения из pear. Если я и смотрю их, то только для разбора принципа работы.
     
  14. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    ахах +1 :)
     
  15. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Добрый дядя хайт составил http://hight.fatal.ru/phpfunclist.rar

    phpfunclist.php - Исходный список функций с php.net
    parser.php - чем я парсил собственно список :)
    result.php - файл с массивом функций вида: 'имя функции' => 'ссылка на php.net'
     
  16. Hight

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

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Никто так за выделение PHP-функций не взялся :) Придётся самому. Если вдохновение придёт сегодня сделаю.
     
  17. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    чесс слово, нет времени совсем. У меня сейчас универ и 3 работы
    Если мне хотя б кто-нить помог с настройкой mercurial+trac =)