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

如何用PhpWord将docx文件转换为仅含正文内容的HTML

仅提取PhpWord转换HTML后的正文内容

要实现只获取docx转换后的正文内容,而非完整的HTML结构,可以通过两种方式实现:

方法一:配置HTMLWriter选项(推荐)

PhpWord的HTMLWriter支持通过配置选项禁用完整HTML标签的生成,直接输出正文内容:

$fileTmp = public_path('test.docx');
$phpWord = \PhpOffice\PhpWord\IOFactory::load($fileTmp);
$htmlWriter = new \PhpOffice\PhpWord\Writer\HTML($phpWord);

// 禁用生成<html>、<head>标签,仅输出正文
$htmlWriter->setWriterOption('includeHtmlTag', false);
$htmlWriter->setWriterOption('includeHeadTag', false);

$content = $htmlWriter->getContent();

设置includeHtmlTag和includeHeadTag为false后,HTMLWriter会跳过<html>、<head>以及包裹正文的<body>标签,直接返回docx中的正文HTML内容。

方法二:DOM解析提取正文(兼容旧版本)

如果你的PhpWord版本不支持上述配置选项,可以用DOMDocument解析完整HTML,提取<body>内的内容:

$fileTmp = public_path('test.docx');
$phpWord = \PhpOffice\PhpWord\IOFactory::load($fileTmp);
$htmlWriter = new \PhpOffice\PhpWord\Writer\HTML($phpWord);
$fullHtml = $htmlWriter->getContent();

// 初始化DOMDocument并处理编码问题
$dom = new \DOMDocument();
libxml_use_internal_errors(true); // 屏蔽HTML解析警告
$dom->loadHTML(mb_convert_encoding($fullHtml, 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();

// 提取body下的所有内容
$bodyNode = $dom->getElementsByTagName('body')->item(0);
$content = '';
foreach ($bodyNode->childNodes as $child) {
    $content .= $dom->saveHTML($child);
}

这种方法通过解析完整HTML文档,将<body>标签内的所有子节点拼接成正文内容,适配不支持配置选项的旧版PhpWord。

内容的提问来源于stack exchange,提问作者user3459394

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:55:16