0

我正在尝试读取 Word 文件的内容。我使用了下面的代码,但它发出警告警告:fread() [function.fread]:长度参数必须大于 0

$filename=$file->getFilename();
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if($ext=='docx')
{
$fname = fopen($filename, 'r');
if (is_readable($filename)) 
{
$content = fread($fname,filesize($filename));
echo $content;
} 
else 
{
echo 'The file is not readable.';
}
fclose($fname);
}
4

3 回答 3

0

Word 文档与文本文件不同(它更像 xml / 二进制文件),因此您不能只使用 echo 并期望它输出文件。

不过有一个图书馆……叫做 Docvert

多维特

于 2013-07-29T22:44:05.767 回答
0

尝试使用“b”标志以二进制模式打开文件,如下所示:

fopen($filename, 'rb')
于 2013-07-29T22:45:48.173 回答
0

文件docx是二进制文件,而不是文本文件,您必须将其作为二进制文件读取。

您没有说明 word 的版本,但由于您的代码示例使用docx了 ,我假设您使用的是较新的 Word 格式文件。

您需要注意的一件事是,这些较新的 Word 文件以及 Excel 和 PowerPoint 都存储为压缩文件。该文件本身实际上是一个与 ZIP 兼容的压缩文件。如果您复制其中一个文件并为其添加 .zip 扩展名,您将看到可以将其作为压缩文件打开,并且可以遍历它的各种文件夹。

您从文件中读取的内容取决于您打算如何处理它。

于 2013-07-29T22:48:24.000 回答