如何在PHP(Laravel)中从指定行(如AT前缀行)读取TXT文件并完善脚本?
PHP从上传TXT文件的指定前缀行开始读取内容
你可以修改脚本,通过逐行读取的方式定位到以AT开头的行,再收集从该行开始的所有内容。这种方式既能精准获取目标内容,还能避免一次性读取大文件占用过多内存。
修改后的代码如下:
$data = $request->file('file'); $filetmp = $data->getRealPath(); // 打开文件准备逐行读取 $fileHandle = fopen($filetmp, "r"); $targetContent = ''; $startCollecting = false; if ($fileHandle) { // 逐行读取直到文件结束 while (($line = fgets($fileHandle)) !== false) { // 判断当前行是否以AT开头(trim去掉首尾空白,避免行首空格导致匹配失败) if (str_starts_with(trim($line), 'AT')) { $startCollecting = true; } // 开始收集后,将当前行加入目标内容 if ($startCollecting) { $targetContent .= $line; } } fclose($fileHandle); } dd($targetContent);
关键说明:
- 用
fgets()逐行读取文件,适合处理大文件,不会一次性加载全部内容到内存 str_starts_with()是PHP 8.0及以上版本的函数,若你的PHP版本较低,可替换为substr(trim($line), 0, 2) === 'AT'- 若能确定目标行首没有空白字符,可以去掉
trim($line)直接判断
内容的提问来源于stack exchange,提问作者Yahya Zakaria
相关产品推荐
相关产品推荐

