PHP Manual с комментариями пользователей в chm

    Навеяно вот этим: Похапе мануал обновился

    Мне лично удобней пользоваться CHM версией руководства по PHP — быстрый поиск удобен, а интернет не всегда доступен. Но у официальной справки нет встроенных пользовательских комментариев, которые зачастую бывают очень полезны. Ранее они были в Extended-версии руководства, но сейчас она уже не поддерживается.

    Полазив в гугле, я обновленной версии руководства с комментами не нашел. Пришлось сделать собственную, и этот процесс может повторить любой желающий.

    Потребуются (все делается под Windows):

    1. распаковываем all.bz2 куда-нибудь, например в папку TMP
    2. Декомпилируем туда же chm:

      hh -decompile TMP php_manual_en.chm


      получим файлы: all, php_manual_en.hhc, php_manual_en.hhk и папку RES со всеми html-файлами справки.
    3. Внедрим в HTML-ки комментарии при помощи простого PHP-скрипта:

      $notes=fopen('tmp/all', 'r');
      while($note=fgets($notes))
      {
       list($id, $sect, $rate, $time, $user, $text)=explode('|', $note);

       //Подсветка кода средствами PHP
       $text=highlight_string(base64_decode($text), true); 
       //избавимся от длинных не переносящихся строк
       $text=preg_replace('/(?<=\w)[&]nbsp;(?=\w)/', ' ', $text);


       $file=file_get_contents('tmp/res/'.$sect.'.html');
       
       $note_body='
      <div id="usernotes">
        <div class="note">
         <span>'
      .strftime('%d.%m.%y %H:%M', $time).'</span> <strong>'.$user.'</strong><br />
         <div class="text">
          <div class="phpcode">
            <code>
              '
      .$text.'
            </code>
          </div>
         </div>
        </div>
      </div>
      '
      ;

       //в файле комментарии будут выстроены в обратном порядке - самые новые сверху
       $file=preg_replace('%(?=<hr /><div class="manualnavbar")%', $note_body, $file);

       file_put_contents('tmp/res/'.$sect.'.html', $file);
      }

      * This source code was highlighted with Source Code Highlighter.

    Создадим в папке TMP файл php_manual_en_notes.hhp:

    [OPTIONS]
    Binary TOC=Yes
    Compatibility=1.1 or later
    Compiled file=php_manual_notes_en.chm
    Contents file=php_manual_en.hhc
    Default Window=manual
    Display compile progress=No
    Full-text search=Yes
    Index file=php_manual_en.hhk
    Language=0x409 Английский (США)
    Title=PHP Manual

    [WINDOWS]
    manual="PHP Manual","php_manual_en.hhc","php_manual_en.hhk","res/index.html","res/index.html",,,,,0x2520,,0x386e,,0x30000,,,,,,0

    [INFOTYPES]


    Откроем созданный файл в HTML Help Workshop. Компилируем и получаем готовый CHM-файл.
    А впрочем… нет, не совсем готовый :) При компиляции произошло две ошибки:

    HHC5013: Error: URL reference in the TOC cannot be resolved: "res\pharfileinfo.chmod.html".
    HHC5013: Error: URL reference in the TOC cannot be resolved: "res\function.chmod.html".


    Если заглянуть в файлы .hhc и .hhk — можно предположить что дело в не так написанном слэше, но на самом деле это не так. Эксперименты показали, что HTML Help Workshop выдает такую ошибку, если в названии файла встречается строка ".chm". Поэтому переименуем файлы в pharfileinfo_chmod.html и function_chmod.html и заменим ссылки на них в файлах .hhc и .hhk.

    Вот теперь компилируется без ошибок.

    Скачать готовый файл (актуальность на 18.08.09) можно здесь.
    UPD: файл обновлен, добавлена подсветка кода, исправлены длинные строки
    файл должен быть на 23 мб — приношу извинения, файл в 10 мб собрался неправильно.

    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 33

      +1
      > Скачать готовый файл (актуальность на сегодня, 18.08.09) можно здесь.
      Ссылка не работает.
        +1
        там лимит на 10 скачиваний исчерпался :(
          0
          Дожили, не знал что теперь с рапиды файлы тока 10 раз скачать можно…
          перезалито на яндекс
            0
            так уже давно. просто надо создать Collector account и заливать из под него, тогда количество скачиваний не ограничивается
          0
          Может еще где нибудь выложите? К примеру на народе чтоли.
            0
            Иногда нужно не только мануал по PHP но и по Zend Framework. Спасибо за полезный топик.
              –2
              блин, если кто-нибудь даст НОРМАЛЬНЫЙ РУССКИЙ мануал по зенду, не поленюсь, перешлю пару баксов вебманей!
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  НОРМАЛЬНЫХ РУССКИХ мануалов никогда не было и вряд ли они когда нибудь появятся.
                  Раз уж хотите нормальной актуальной документации — будьте добры читать первоисточник.
                0
                Не думал, что весит аж 20M )
                  0
                  спасиби)
                    –4
                    Спасибо!

                    А ещё можно через онлайн быстрый доступ к нему получать через php.net/название_функции
                      +1
                      Теперт ждём компиляцию на русском и я с удовольствием ей заменю свою текущую — без комментариев :)
                        0
                        Если кому не нравится chm, то можно поднять локальное зеркало php.net с комментариями и т.п. и заходить локально, но как большие)
                        www.php.net/mirroring.php — понятная инструкция к действию
                          0
                          Спасибо!

                          У Вас все готово для автоматизации генерации данного файла — загружаешь последнюю версию на сайт, в результате обработки — конечный файл :)
                            0
                            Кстати, для Mac-пользователей есть замечательная прога PHP Fi (PHP function index). По сути это обертка хтмл-помощи, но в которой можно искать функции и все такое, как в chm для винды.
                              –2
                              Тема стара как мир, уже года полтора на компе имеется подобная вещь на обоих языках
                                0
                                Чего ж не поделитесь?
                                  –1
                                  еще раз повторяю эта тема стара как мир, это все равно что я вам сейчас буду windows 98 предлагать установить, только потому что такой темы еще не было… Этой фишке от php уже черт знает сколько лет к вашему сведению, а тему тут такую сделали будто бы сенсация…
                                    +1
                                    Дело в том, что сейчас на сайте php.net вы уже не найдете мануала с комментариями, в июне убрали.

                                    bugs.php.net/bug.php?id=48707&edit=1

                                    И мануал все таки лучше свежий, чем полуторагодовой давности…
                                      0
                                      Ну во первых эта опция со скачиванием мануалов на сайте php висит уже больше чем полтора года, а во вторых последний мануал который я качал был за 2008 год с коментами ничем не лучше и не хуже этого.
                                0
                                Спасибо!
                                Еще бы подсветку комментов сделать, а то всё серенькое такое :)
                                  0
                                  Сделал по быстрому
                                    0
                                    Оо, вот теперь реально крутой мануал! Спасибо :)
                                      0
                                      последняя версия неправильно собралась :(

                                      вот сейчас должен быть окончательно нормальный.
                                        0
                                        Бывает :) Спасибо за труд.
                                  0
                                  Вот такое чудо было бы для python, я был бы счастлив
                                    0
                                    Было бы круто, может тоже так зашаманить…
                                      0
                                      Сейчас сижу шаманю, только такой базы нет комментариев для питона :(
                                    0
                                    а он разве без инета не должен работать?;)
                                    я к тому, что у меня не работает.
                                    или может он ещё куда обращается, но у меня на любой странице
                                    «Недействительный адрес
                                    Возможные причины: ...»
                                    внутри chm-ки все файлы на месте.
                                    странно.
                                      0
                                      надо зайти в свойства файла и нажать разблокировать.
                                        0
                                        спасибо
                                      0
                                      Спасибо за статью. Интересно, существует ли в природе компилятор chm для иксов…

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

                                      Самое читаемое