• 0
  • 0

PHP读取docx文档里面内容

2019-09-05 36 0 admin 所属分类:PHP 记录

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 条目已被删除 


返回顶部