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

如何用JavaScript或PHP实现DOCX转HTML并导入富文本编辑器

解决方法

你遇到的$ is not a function报错是docx2html包本身依赖jQuery导致的,和你站点多版本jQuery的环境冲突,而你只需要提取纯文本不需要样式,完全可以避开这类有冗余依赖的工具,下面给两种无冲突的实现方案:


方案1:前端实现(无jQuery依赖,仅提取纯文本)

直接用mammoth的extractRawText接口,该工具本身不依赖任何前端框架,不会和你现有jQuery环境冲突,不需要处理样式转换逻辑:

// 文件选择事件回调
async function handleDocxUpload(e) {
  const file = e.target.files[0];
  if (!file || !file.name.endsWith('.docx')) return;
  // 直接提取纯文本,无任何样式转换开销
  const extractResult = await mammoth.extractRawText({ file: file });
  document.querySelector('textarea').value = extractResult.value;
}

你可以直接下载mammoth的单文件JS包到本地引入,不需要在线依赖,调用逻辑非常简单。


方案2:后端PHP实现(零前端额外依赖)

如果不想在前端引入任何JS资源,可以走后端解析逻辑,只用PHP官方内置的ZipArchive扩展即可完成纯文本提取,不需要第三方包:

function getDocxPlainText(string $tmpFilePath): string {
    $zip = new ZipArchive();
    if (!$zip->open($tmpFilePath)) return '';
    
    // DOCX的文本内容统一存在word/document.xml文件内
    $docXml = $zip->getFromName('word/document.xml');
    $zip->close();

    // 过滤XML标签直接提取文本内容
    $dom = new DOMDocument();
    $dom->loadXML($docXml);
    $plainText = trim($dom->textContent);
    // 清理多余空白字符可选
    return preg_replace('/\s{2,}/', ' ', $plainText);
}

// 接收上传文件调用示例
if ($_FILES['docx']['error'] === UPLOAD_ERR_OK) {
    $content = getDocxPlainText($_FILES['docx']['tmp_name']);
    // 返回给前端插入编辑器即可
}

这个方案完全不涉及前端依赖冲突问题,稳定性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:30:00