将带有PHPWord的word文档解析为字符串

将带有PHPWord的word文档解析为字符串,php,phpword,Php,Phpword,我尝试了几种在PHP中将word文档解析为字符串的解决方案,但是它们有时在处理某些word文档时遇到问题。所以我现在试着用PHPWord把word文档解析成一个字符串 我正在PHPWord中查看这个示例文件,它读取一个Word文档并输出到另一个Word文档: include_once 'Sample_Header.php'; // Read contents $name = basename(__FILE__, '.php'); $source = "resources/{$name}.doc

我尝试了几种在PHP中将word文档解析为字符串的解决方案,但是它们有时在处理某些word文档时遇到问题。所以我现在试着用PHPWord把word文档解析成一个字符串

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

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中将内容解析为字符串。如何修改以将内容输出到字符串?

您必须使用收到的对象:

$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc');
它是数组和对象的多维对象,您必须定位
[elements]
属性,您必须在其中定位[
text]
属性。此
[text]
属性包含从Word文件中提取的文本

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

我现在可以从.doc文件中提取文本,但我注意到PHPWord只会从任何.doc文件中提取大约60%的文本,有时只是将提取的最后一个单词减半。所以,如果你的文件有4000个单词,PHPWord只能得到其中的2000个

事实上,我在这里很困惑,为什么PHPWord不想得到所有的文本。没有通知,没有例外,只是一个对象,没有.doc文件中的一半文本