首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHPWord将word文档解析为字符串

使用PHPWord将word文档解析为字符串
EN

Stack Overflow用户
提问于 2018-05-31 16:46:21
回答 1查看 4.6K关注 0票数 2

我尝试过几种解决方案,在PHP中将word文档解析为字符串,但是它们有时在某些word文档中遇到问题。因此,我现在尝试PHPWord尝试将word文档解析为一个字符串。

我在PHPWord中查看这个示例文件,它读取一个Word文档并输出到另一个Word文档:

代码语言:javascript
复制
include_once 'Sample_Header.php';

// Read contents
$name = basename(__FILE__, '.php');
$source = "resources/{$name}.doc";
echo date('H:i:s'), " Reading contents from `{$source}`", EOL;
$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc');

// (Re)write contents
$writers = array('Word2007' => 'docx', 'ODText' => 'odt', 'RTF' => 'rtf');
foreach ($writers as $writer => $extension) {
    echo date('H:i:s'), " Write to {$writer} format", EOL;
    $xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, $writer);
    $xmlWriter->save("{$name}.{$extension}");
    rename("{$name}.{$extension}", "results/{$name}.{$extension}");
}

include_once 'Sample_Footer.php';

但是,我不想输出另一个完整的Word文档,我只想将内容解析为PHP中的一个字符串。如何将其修改为将内容输出到字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-22 13:25:57

您必须使用收到的对象:

代码语言:javascript
复制
$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc');

它是数组和对象的多维对象,您必须定位[elements]属性,其中您必须定位‘text property. Thistext’属性包含从Word文件中提取的文本。

请记住,在默认情况下,这两个属性是受保护的,因此您必须在PHPWord库文件中更改它们的状态--对于[elements]是AbstractContainer.php,对于[text]是Text.php。一旦将这两个属性的状态更改为public,就可以从$phpWord对象中提取它们。

现在我可以从.doc文件中提取文本,但我注意到的是,PHPWord只会从任何.doc文件中提取大约60%的文本,有时只是将它提取的最后一个单词减少一半。所以,如果您的文件有4,000个单词,那么PHPWord只得到大约2,000个单词。

实际上,我不明白为什么PHPWord不想得到所有的文本。没有注意,没有异常,只有一个对象没有.doc文件中一半的文本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50629144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档