如何用PHPWord将Word文档解析为PHP字符串?
用PHPWord提取Word文档内容为PHP字符串
你之前的代码是用来转成不同格式的文档,要改成提取纯文本的话,核心是遍历PHPWord加载后的文档结构,把每个文本元素的内容拼接起来。下面是调整后的完整代码和说明:
修改后的代码
include_once 'Sample_Header.php'; // 读取文档 $name = basename(__FILE__, '.php'); $source = "resources/{$name}.doc"; echo date('H:i:s'), " Reading contents from `{$source}`", PHP_EOL; $phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc'); // 提取文本内容的核心逻辑 $documentText = ''; // 遍历文档的所有节(Section) foreach ($phpWord->getSections() as $section) { // 遍历节内的所有元素 foreach ($section->getElements() as $element) { // 判断元素类型,如果是文本段落(TextRun或Text),提取内容 if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) { foreach ($element->getElements() as $textElement) { if ($textElement instanceof \PhpOffice\PhpWord\Element\Text) { $documentText .= $textElement->getText() . PHP_EOL; } } } elseif ($element instanceof \PhpOffice\PhpWord\Element\Text) { $documentText .= $element->getText() . PHP_EOL; } // 如果你需要处理表格、标题等其他元素,可以在这里扩展判断逻辑 // 比如表格:if ($element instanceof \PhpOffice\PhpWord\Element\Table) { ... } } } // 输出或使用提取到的文本 echo date('H:i:s'), " Extracted text content:", PHP_EOL; echo $documentText; include_once 'Sample_Footer.php';
关键说明
- 文档结构遍历:PHPWord把Word文档分成多个
Section(节),每个节里包含各种元素(文本段落、表格、图片等),我们需要逐层遍历这些元素才能拿到所有内容。 - 文本元素适配:Word里的文本可能是单个
Text元素,也可能是包含多个文本片段的TextRun(比如带格式的混合文本),所以要分别处理这两种情况,调用getText()方法获取纯文本内容。 - 复杂元素扩展:如果你的文档里有表格、列表、标题等复杂元素,可以继续添加对应的
instanceof判断——比如表格需要遍历行和单元格,再提取单元格内的文本内容。
这样修改后,你就能直接得到文档的纯文本字符串,而不用生成新的Word/ODT/RTF文件了。
内容的提问来源于stack exchange,提问作者dlofrodloh
相关产品推荐
相关产品推荐

