我很难显示此docx文件的原始内容。它显示了许多不必要的单词和符号。
这是我要从中提取原始内容的docx文件。
https://www.darlingheadbands.com/wp-content/uploads/2019/04/file.docx
现在我得到一些普通的原始文本,也有一些奇怪的文本,例如下面的文本。
PEVuZE5vdGU + PENpdGU + PEF1dGhvcj5Db2hlbjwvQXV0aG9yPjxZZWFyPjIwMDU8L1llYXI + PFJl Y051bT4wPC9SZWNOdW0 + PElEVGV4dD5PZmYtbGluZSBsZWFybmluZyBvZiBtb3RvciBza2lsbCBt ZW1vcnk6IGEgZG91YmxlIGRpc3NvY2lhdGlvbiBvZiBnb2FsIGFuZCBtb3ZlbWVudDwvSURUZXh0 PjxEaXNwbGF5VGV4dD4oV2lsbGluZ2hhbSAxOTk5LCBDb2hlbiwgUGFzY3VhbC1MZW9uZSBldCBh
这是我的代码
<?php
function docx_to_text($input_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;
}
echo docx_to_text("file.docx");
?>
它应该只显示原始文本,而不包含任何图像,表格或格式。只是纯文本。
答案 0 :(得分:0)
这对我有用(使用您的文档):
<?php
function read_docx($document)
{
$content = '';
$zip = zip_open($document);
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);
}
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);
$content = preg_replace('/<w:fldData xml:space="preserve">.*<\/w:fldData>/Ums', '', $content);
return strip_tags($content);
}
echo read_docx('./file.docx');
您看到的奇怪文本与 fldData 条目相关,我不得不删除它们。
我保留了文档属性,如果不需要它们,只需使用preg_replace删除它们。