我的一个客户有这样的需求:上传文件,可以是doc,docx,xls,pdf,txt格式,现需要用php读取这些文件的内容,然后计算文件里面字数.
1.PHP读取DOC格式的文件
首先介绍一下如何在windows下使用:
2.将下载下来的文件解压到C盘根目录下;
需要设置环境变量,我的电脑(右键)->高级->环境变量->在上面的用户变量里新建一个
变量名:HOME
变量值:c:\home这个目录应该是存在的,如果不存在就在C盘下创建一个home文件夹.
然后在系统变量,修改Path,在Path变量的值最前面加上%HOME%\antiword.
3.开始->运行->CMD 进入到antiword目录;
输入 antiword -h 看看效果.
4.然后我们使用antiword –t 命令读取一下doc文件内容;首先复制一个doc文件到c:\antiword目录,然后执行
>antiword –t 文件名.doc
就可以看到屏幕上输出word文件的内容了.
可能你会问了,这和PHP读取word有什么关系呢?呵呵,别急,我们来看看如何在PHP里使用这个命令.
$file = “D:\xampp\htdocs\word_count\uploads\doc-english.doc”;
$content = shell_exec(“c:\antiword\antiword –f $file”);
?>
这样就把word里面的内容读取content里面了.
至于如何在Linux下读取doc文件内容,就是下载linux版本的压缩包,里面有readme.txt文件,按照那种方式安装就可以了.
$content = shell_exec ( "/usr/local/bin/antiword -f $file" );
2.PHP读取PDF文件内容
php也没有专门用来读取pdf内容的类库.这样我们采用第三方包(xpdf).还是先做windows下的操作,下载,将其解压到C盘根目录下.
开始->运行->cmd->cd /d c:\xpdf
$file = “D:\xampp\htdocs\word_count\uploads\pdf-english.pdf”;
$content = shell_exec ( "c:\\xpdf\\pdftotext $file -" );
?>
这样就可以把pdf文件的内容读取到php变量里了.
Linux下的安装方法也很简单这里就不在一一列出
$content = shell_exec ( "/usr/bin/pdftotext $file -" );
?>
3.PHP读取ZIP文件内容
首先使用PHP zip解压zip文件,然后读取解压包里的文件,如果是word就采用antiword读取,如果是pdf就使用xpdf读取.
/**
* Read ZIP valid file
*
* @param string $file file path
* @return string total valid content
*/
function ReadZIPFile($file = '') {
$content = "";
$inValidFileName = array ();
$zip = new ZipArchive ( );
if ($zip->open ( $file ) === TR ) {
for($i = 0; $i < $zip->numFiles; $i ++) {
$entry = $zip->getNameIndex ( $i );
if (preg_match ( '#\.(txt)|\.(doc)|\.(docx)|\.(pdf)$#i', $entry )) {
$zip->extractTo ( pathinfo ( $file, PATHINFO_DIRNAME ) . "/" . pathinfo ( $file, PATHINFO_FILENAME ), array (
$entry
) );
$conte