MS Word 2007 и PHP
Задача, вытащить весь текст содержащийся в документе (docx, MS Office 2007), в переменную на PHP.
Информация:
1. Документы от 2007 офиса, представляют собой набор xml файлов в zip-архиве, который можно открыть архиватором.
2. Кроме файлов, там содержаться, также и сопутствующие файлы, типа картинок.
3. XML файл в котором содержиться документ, называется document.xml, находится в папке /word
Реализация:
1. Подключаем библиотеку для работы с zip-архивами php_zip.dll, для этого в файле php.ini нужно убрать символ комментария (;) в начале строки:
1 2 3 |
extension=php_zip.dll |
2. Теперь можно использовать такую функцию
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function get_plain_text($sfilename) { $c=false; $zip = new ZipArchive(); // создаем объект для работы с зипом if ($zip->open($sfilename) !== true) echo 'Не могу открыть zip-архив'; else { $dirname="docx/unzip".strftime("%Y%M%D%H%M%S"); $zip->extractTo($dirname);//распаковываем в временную папку , которую после удалим $filename = $dirname."/word/document.xml"; //путь к документу $handle = fopen($filename, "r"); $c=strip_tags(fread($handle, filesize($filename)));//считываем все из файла и убираем XML-теги fclose($handle); $zip->close(); full_del_dir ($dirname);//функция, которая удаляет не пустой каталог, её нужно писать самостоятельно } return $c; } |
Теперь можно использовать
1 2 3 |
if ($text=get_plain_text('./mydoc.docx')) echo $text; |
Всё просто 🙂
Author: | Tags: /
| Rating:
Leave a Reply