将带有PHPWord的word文档解析为字符串
我尝试了几种在PHP中将word文档解析为字符串的解决方案,但是它们有时在处理某些word文档时遇到问题。所以我现在试着用PHPWord把word文档解析成一个字符串 我正在PHPWord中查看这个示例文件,它读取一个Word文档并输出到另一个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
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文件中的一半文本