You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:03