Вопрос № 120951: Помогите написать скрипт для извлечения данных из *.fb2 (xml).
Уменя есть большое количество книг (тысячи), в формате *.fb2. Мне необходимо сделать список этих книг, в БД MySQL. Вобще fb2 это разновидность xml, там всё по тегам расписанно, м...
Вопрос № 120.951
Помогите написать скрипт для извлечения данных из *.fb2 (xml).
Уменя есть большое количество книг (тысячи), в формате *.fb2. Мне необходимо сделать список этих книг, в БД MySQL. Вобще fb2 это разновидность xml, там всё по тегам расписанно, мне же надо распознать их и забить по соответствующим полям таблицы.
Пример:
Вилл Третьяков
Игра в Грааль тут картинка коде
надо сделать БД вида:
Автор - Название - Картинка
и ещё сохранить эту картинку в соответствующий файл.
Надеюсь на вашу помощь, с php у меня проблем нет, но вот xml тёмный лес, так с налёту не разобрался. При анализировании в лоб есть проблема теги могут встречатся в документе несколько раз, например имя может быть и у автора и у владельца, а мне нужен только автор.
Отправлен: 31.01.2008, 00:10
Вопрос задал: NiGHT (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Kruphi
Здравствуйте, NiGHT!
Приведённый Вами пример не показывает случай встречи тегов несколько раз.
По имеющимся у меня fb2 книгам видно, что автор и название прописаны внутри тегов <title-info>...</title-info>. А владелец и т.п. в <document-info>...
В приложенном примере я просто сразу ограничиваю область поиска зоной <title-info>...</title-info> :)
Элемент массива $res['cover_jpg'] думаю Вам сохранить функцией fwrite($fp,$res['cover_jpg']) в файл открытый бинарно $fp=fopen(...,'wb') не составит труда.
Приложение:
Ответ отправил: Kruphi (статус: 3-ий класс)
Ответ отправлен: 31.01.2008, 10:23 Оценка за ответ: 5 Комментарий оценки: большое спасибо за текст. вобще я спрашивал больше в надежде разобраться с xml, т.к. я не любитель разовых решений. но решение полностью рабочее и есть комментарии. хотя обработку ошибок можно сделать и погибче, части поиска подстроки оформить функцией. А с прямым сохранением в файл не получается, там нужна какая то декодировка.