如何使用php或codeigniter读取doc文件的内容

时间:2014-01-26 12:35:03

标签: codeigniter doc php

private function read_doc($filename) {
    $fileHandle = fopen($filename, "r");
    var_dump($filename);
    $line = fread($fileHandle, filesize($filename));
    $lines = explode(chr(0x0D), $line);
    $outtext = "";
    foreach ($lines as $thisline) {
        $pos = strpos($thisline, chr(0x00));
        if (($pos !== FALSE) || (strlen($thisline) == 0)) {

        } else {
            $outtext .= $thisline . " ";
        }
    }
    $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/", "", $outtext);
    return $outtext;
}

我正在尝试使用上面的代码阅读.doc的内容..但是当我运行上面的代码时,它给了我

filesize(): stat failed for http://localhost/jobportal/public/uploads/document/1.doc

fread(): Length parameter must be greater than 0

3 个答案:

答案 0 :(得分:1)

正如您在此处所见http://php.net/manual/en/function.filesize.php

从PHP 5.0.0开始,此函数也可以与某些URL包装器一起使用。请参阅支持的协议和包装器以确定哪些包装器支持stat()系列功能。

如果您要转到此链接http://www.php.net/manual/en/wrappers.http.php,您会看到Supports stat()为“NO”。因此,您无法使用具有filesize功能的http链接。如果这是本地文件,只需使用文件的绝对或相关路径,如'/path/to/my/file',如果这是远程文件(不确定但是),我认为应首先使用curlcurl_getinfo下载函数读取Content-Length http属性

答案 1 :(得分:0)

filesize(): stat failed for http://localhost/jobportal/public/uploads/document/1.doc表示:您正在尝试获取不适用的网址文件大小。

您需要从块中读取数据直到结束并检查实际提交的数据量。

答案 2 :(得分:0)

if($ext == 'doc'){
    if(file_exists($filename) ) {        
    if(($fh = fopen($filename, 'r')) !== false ) {
    $headers = fread($fh, 0xA00);
    $n1 = ( ord($headers[0x21C]) - 1 );
    $n2 = ( ( ord($headers[0x21D]) - 8 ) * 256 );
    $n3 = ( ( ord($headers[0x21E]) * 256 ) * 256 );
    $n4 = ( ( ( ord($headers[0x21F]) * 256 ) * 256 ) * 256 );
    $textLength = ($n1 + $n2 + $n3 + $n4);
    $content_of_file1 = fread($fh, $textLength);
    $content_of_file = strtolower($content_of_file1);

    }
}

}