forked from rembish/TextAtAnyCost
-
Notifications
You must be signed in to change notification settings - Fork 0
/
zipped-xml.php
33 lines (31 loc) · 1.56 KB
/
zipped-xml.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
function odt2text($filename) {
return getTextFromZippedXML($filename, "content.xml");
}
function docx2text($filename) {
return getTextFromZippedXML($filename, "word/document.xml");
}
function getTextFromZippedXML($archiveFile, $contentFile) {
// Создаёт "реинкарнацию" zip-архива...
$zip = new ZipArchive;
// И пытаемся открыть переданный zip-файл
if ($zip->open($archiveFile)) {
// В случае успеха ищем в архиве файл с данными
if (($index = $zip->locateName($contentFile)) !== false) {
// Если находим, то читаем его в строку
$content = $zip->getFromIndex($index);
// Закрываем zip-архив, он нам больше не нужен
$zip->close();
// После этого подгружаем все entity и по возможности include'ы других файлов
// Проглатываем ошибки и предупреждения
$xml = new DOMDocument();
$xml->loadXML($content, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// После чего возвращаем данные без XML-тегов форматирования
return iconv("utf-8", "windows-1250", strip_tags($xml->saveXML()));
}
$zip->close();
}
// Если что-то пошло не так, возвращаем пустую строку
return "";
}
?>