如何从doc文件中检索文本

时间:2015-08-06 12:10:57

标签: php

我正在尝试使用docphp文件中检索文本。这是我正在使用的代码:

    function read_doc() {
        foreach (glob("*.doc") as $filename) {

            $file_handle = fopen($filename, "r"); //open the file
            $stream_text = @fread($file_handle, filesize($filename));
            $stream_line = explode(chr(0x0D),$stream_text);
            $output_text = "";
            foreach($stream_line as $single_line){
                $line_pos = strpos($single_line, chr(0x00));
                if(($line_pos !== FALSE) || (strlen($single_line)==0)){
                    $output_text .= "";
                }else{
                    $output_text .= $single_line." ";
                }
            }
            $output_text = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/", "", $output_text);
            echo $output_text;
        }
}

我得到了这个结果:

  

HYPERLINK mailtoAnother@email.us Another@email.us Y,dXiJ(x(I_TS1EZBmU / xYy5g / GMGeD3Vqq8K)fw9 xrxwrTZaGy8IjbRcXI u3KGnD1NIBs RuKV.ELM2fiVvlu8zH(W uV4(Tn 7_m-UBww_8(/ 0hFL)7iAs),Qg20ppf DU4p MDBJlC5 2FhsFYn3E6945Z5k8Fmw-dznZxJZp / P,)KQk5qpN8KGbe Sd17 paSR 6Q

是否有一些解决方案可以清除此问题,因此只返回string文件中的doc个文字?

2 个答案:

答案 0 :(得分:1)

使用vanilla php很难处理Doc文件。

使用https://github.com/alchemy-fr/PHP-Unoconv我做了你需要的东西。它将实际检测不同的格式,并为您生成一个漂亮的xml。可以找到文档here

如果你搜索" unoconv"网上也会有很多例子。 +" php"

答案 1 :(得分:0)

解析MS Word文档很难处理代码。

这是因为MS将大量数据嵌入到它们的格式中,当你回显出已解析的单词/段落时,它看起来就像是乱七八糟。

我建议您尝试使用包库(来自packagist)来帮助您解决此问题Word-Doc-Parser

如果您的系统上有composer,可以通过static inline void init_perfcounters(int32_t do_reset, int32_t enable_divider) { // in general enable all counters (including cycle counter) int32_t value = 1; // peform reset: if (do_reset) { value |= 2; // reset all counters to zero. value |= 4; // reset cycle counter to zero. } if (enable_divider) value |= 8; // enable "by 64" divider for CCNT. value |= 16; // program the performance-counter control-register: asm volatile ("MCR p15, 0, %0, c9, c12, 0\t\n" :: "r"(value)); // enable all counters: asm volatile ("MCR p15, 0, %0, c9, c12, 1\t\n" :: "r"(0x8000000f)); // clear overflows: asm volatile ("MCR p15, 0, %0, c9, c12, 3\t\n" :: "r"(0x8000000f)); } 轻松安装。