如何从docx文件中提取文本?

时间:2014-01-16 11:16:09

标签: php docx

有人可以帮我从php中的docx文件中提取文本吗? 或者是否有任何linux命令?

我可以从pdf和doc中提取文本,因此php(或linux命令)中的docx到pdf或doc转换也适用于我。

3 个答案:

答案 0 :(得分:1)

从docx中提取文本非常容易,你甚至不需要依赖(除了你应该激活的zip模块)

<?php

function read_docx($filename) {
    $striped_content = '';
    $content = '';

    $zip = zip_open($filename);

    if (!$zip || is_numeric($zip))
        return false;

    while ($zip_entry = zip_read($zip)) {

        if (zip_entry_open($zip, $zip_entry) == FALSE)
            continue;

        if (zip_entry_name($zip_entry) != "word/document.xml")
            continue;

        $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

        zip_entry_close($zip_entry);
    }// end while

    zip_close($zip);

    $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content);
    $content = str_replace('</w:r></w:p>', "\r\n", $content);
    $striped_content = strip_tags($content);

    return $striped_content;
}


echo read_docx("textExample.docx");

感谢Muhammad's question

答案 1 :(得分:0)

利用OpenTBS

包括它之后..这样做..

include_once('tbs_class.php');
include_once('../tbs_plugin_opentbs.php');
$TBS = new clsTinyButStrong;
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
$TBS->LoadTemplate('filename.docx');
echo $string = $TBS->Source; // your docx content is now in this variable

答案 2 :(得分:0)

您可以从docx文件中提取文本,请找到以下代码,并需要安装ZipArchive文件

public function docx_to_text($filename)
{
    $input_file = 'tmp_file.zip';
    copy($filename, $input_file);    //copy file with path (content) to temp.zip file

    $xml_filename = "word/document.xml"; //content file name
    $zip_handle = new ZipArchive;
    $output_text = "";

    if(true === $zip_handle->open($input_file))
    {
        if(($xml_index = $zip_handle->locateName($xml_filename)) !== false)
        {
            $xml_datas = $zip_handle->getFromIndex($xml_index);
            $xml_handle = DOMDocument::loadXML($xml_datas, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
            $output_text = strip_tags($xml_handle->saveXML());
        }
        else
        {
            $output_text .="";
        }
        $zip_handle->close();
    }
    else
    {
        $output_text .="";
    }
    return $output_text;
}