docx文件其实是由很多XML文件组成,其中内容就存在于word/document.xml里面。
我们找到一个docx文件,使用zip文件打开(或者把docx后缀名改为zip,然后解压)
在word目录下有document.xml,docx文件的内容就存在于document.xml里面,我们读取这个文件就可以了
注意:
① $file文件不能与当前代码在同一目录文件下,$file存放在单独的文件夹
② doc文档无法解析 必须是docx
演示代码
echo parseWord('d:\Users\Administrator\Desktop\demo.zip');
函数实现
function parseWord($file) {
$content = "";
$zip = new ZipArchive();
if ($zip->open($file) === TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$entry = $zip->getNameIndex($i);
if (pathinfo($entry, PATHINFO_BASENAME) == "document.xml") {
$zip->extractTo(pathinfo($file, PATHINFO_DIRNAME) . "/" . pathinfo($file, PATHINFO_FILENAME), array($entry));
$filepath = pathinfo($file, PATHINFO_DIRNAME) . "/" . pathinfo($file, PATHINFO_FILENAME) . "/" . $entry;
$content = strip_tags(file_get_contents($filepath));
break;
}
}
$zip->close();
return $content;
} else {
return false;
}
}
附带 ZipArchive打开文件时的错误代码
0 ZIPARCHIVE::ER_OK 没有错误。 1 ZIPARCHIVE::ER_MULTIDISK 不支持多磁盘zip压缩包。 2 ZIPARCHIVE::ER_RENAME 重命名临时文件失败。 3 ZIPARCHIVE::ER_CLOSE 关闭zip压缩包失败。 4 ZIPARCHIVE::ER_SEEK 寻址错误 5 ZIPARCHIVE::ER_READ 读取错误 6 ZIPARCHIVE::ER_WRITE 写入错误 7 ZIPARCHIVE::ER_CRC CRC校验失败 8 ZIPARCHIVE::ER_ZIPCLOSED zip压缩包已关闭 9 ZIPARCHIVE::ER_NOENT 没有文件 10 ZIPARCHIVE::ER_EXISTS 文件已经存在 11 ZIPARCHIVE::ER_OPEN 不能打开文件 12 ZIPARCHIVE::ER_TMPOPEN 创建临时文件失败 13 ZIPARCHIVE::ER_ZLIB Zlib错误 14 ZIPARCHIVE::ER_MEMORY 内存分配失败 15 ZIPARCHIVE::ER_CHANGED 条目已被改变 16 ZIPARCHIVE::ER_COMPNOTSUPP 不支持的压缩方式 17 ZIPARCHIVE::ER_EOF 过早的EOF 18 ZIPARCHIVE::ER_INVAL 无效的参数 19 ZIPARCHIVE::ER_NOZIP 不是一个zip压缩包 20 ZIPARCHIVE::ER_INTERNAL Internal 21 ZIPARCHIVE::ER_INCONS Zip压缩包不一致 22 ZIPARCHIVE::ER_REMOVE 不能移除文件 23 ZIPARCHIVE::ER_DELETED 条目已被删除 |
---|