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

PHP报错Only variables should be passed by reference 及.docx读取求助

解决PHP读取本地.docx时的"Only variables should be passed by reference"报错

嘿,作为刚接触PHP的新手,遇到这个报错完全不用慌!我来帮你一步步理清问题、解决它~

错误原因拆解

你看到的这个Notice: Only variables should be passed by reference错误,核心原因是:某个PHP函数需要接收一个「变量引用」当参数,但你直接传了临时的表达式或者函数返回值。

举个最常见的例子:如果你在第9行写了类似$ext = end(explode('.', 'test.docx'));这样的代码,end()函数要求参数必须是一个能被修改的变量(它要调整数组的内部指针),但explode()返回的是一个临时数组,没法被当作引用传递,所以就触发了这个提示。

分步解决步骤

1. 修复引用传递问题

把原本直接塞进函数的临时值,先存到一个变量里,再把变量传给函数就行。比如:
❌ 错误写法:

$extension = end(explode('.', $filename));

✅ 正确写法:

// 先把拆分后的数组存到变量里
$fileParts = explode('.', $filename);
// 再把变量传给end()
$extension = end($fileParts);

2. 可用的本地.docx读取测试代码

我给你写了一套能直接运行的测试代码,先帮你验证本地docx文件能不能被正常读取(注意:docx本质是压缩包,直接读会显示乱码,这是正常的,我们先确保文件能被PHP访问到):

<?php
echo "Testing<br>";

// 定义docx文件的路径,和test3.php同目录的话直接写文件名就行
$docxFile = 'test.docx';

// 先检查文件是不是真的存在
if (!file_exists($docxFile)) {
    die("哎呀,文件找不到!请确认test.docx和test3.php在同一个文件夹里哦");
}

// 读取文件内容
$fileData = file_get_contents($docxFile);

// 输出文件大小来验证读取成功
echo "文件读取成功啦!文件大小:" . strlen($fileData) . " 字节<br>";

// 要是之后想提取docx里的文字内容,后面我会给你说方法~
?>

3. 运行验证

把上面的代码替换你当前的test3.php内容,然后打开浏览器访问http://localhost/technical/test3.php:

  • 如果看到「Testing」+「文件读取成功啦!...」的提示,说明基础读取功能没问题了
  • 如果还是报错,那你可以把第9行的代码贴出来,我帮你再调整

后续扩展:提取docx里的文本内容

如果你最终要提取docx的文字内容,推荐用PHPWord这个专门的类库:

  1. 下载PHPWord的压缩包,把里面的src文件夹放到你的technical目录下
  2. 用下面的代码就能解析出文本:
<?php
require_once 'src/PhpOffice/PhpWord/Autoloader.php';
\PhpOffice\PhpWord\Autoloader::register();

$docxFile = 'test.docx';
$phpWord = \PhpOffice\PhpWord\IOFactory::load($docxFile);

$textContent = '';
// 遍历文档的所有章节和元素,提取文本
foreach ($phpWord->getSections() as $section) {
    foreach ($section->getElements() as $element) {
        if (method_exists($element, 'getText')) {
            $textContent .= $element->getText() . "\n";
        }
    }
}

echo "docx里的文本内容:<br>" . nl2br($textContent);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:16:13