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

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

Мне лично удобней пользоваться 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 мб собрался неправильно.

Tags:phpmanualchmnotesкомментарии
Hubs: PHP
+32
4.8k 50
Comments 33

Popular right now

PHP-разработчик
from 40,000 to 60,000 ₽Dota2.ruRemote job
PHP-разработчик
to 60,000 ₽GROM-ITRemote job
PHP-разработчик
from 80,000 to 100,000 ₽MedX.proRemote job
Программист PHP
from 160,000 to 200,000 ₽Университет «Синергия»МоскваRemote job
PHP специалист
to 108,000 ₽WebitМоскваRemote job