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

如何移除文本文件中的空格?PHP代码实现失败求助

解决PHP移除文本文件空格失败的问题

你尝试移除文本文件中的空格但没成功,我先帮你分析代码里的问题,再给出可行的修复方案。

原文件内容

10400000 2090183800001990000000000000000000001234204321000000000EMPRESA C ECON FEDERAL 20601201405551100162204000000 RETORNO-PRODUCAO 000 10400011T0100030 20090183800001990000000000000000000001234204321000000000EMPRESA 00001622060120140000000000 

期望处理后的格式

02RETORNO0000000000000000011119999990000000000000000000000000000000000000000104000000000000000201016000000000

你使用的代码

$arquivo = fopen($_FILES["Arquivo"]["tmp_name"], "r"); 
$arquivo = preg_replace('/\s+/', '', $arquivo); 
while (!feof($arquivo)) { 
    $linhas = fread($ler,999999); 
    $banco = substr($linhas,0,3); 
    $lote = substr($linhas,4,7); 
    $registro = substr($linhas,8,8); 
} 
echo "Banco: " .$banco. "<br>"; 
echo "Lote: " .$lote. "<br>"; 
echo "Registro: " .$registro. "<br>";

问题分析

你的代码有几个明显的错误,导致无法正常工作:

  1. 错误处理文件资源:fopen返回的是文件资源句柄,不是文件内容字符串,直接对它调用preg_replace完全无效,这是核心问题。
  2. 变量名不一致:循环里用了$ler变量,但你打开文件时赋值的是$arquivo,这会让fread找不到正确的文件资源。
  3. 读取逻辑冗余:用while (!feof($arquivo))配合fread读取整个文件没必要,反而容易出现读取不完整的情况。

修复后的代码

下面是修正后的代码,能正确移除空格并提取你需要的字段:

// 先检查文件是否上传成功
if ($_FILES["Arquivo"]["error"] !== UPLOAD_ERR_OK) {
    echo "文件上传失败,请重试";
    exit;
}

// 一次性读取整个文件内容到字符串
$fileContent = file_get_contents($_FILES["Arquivo"]["tmp_name"]);

// 移除所有空白字符(空格、换行、制表符等)
$cleanContent = preg_replace('/\s+/', '', $fileContent);

// 从清理后的内容中提取字段
$banco = substr($cleanContent, 0, 3);
$lote = substr($cleanContent, 4, 7);
$registro = substr($cleanContent, 8, 8);

// 输出结果
echo "Banco: " . $banco . "<br>";
echo "Lote: " . $lote . "<br>";
echo "Registro: " . $registro . "<br>";

// 如果需要保存清理后的文件,取消下面注释
// file_put_contents('处理后的文件.txt', $cleanContent);

关键说明

  • file_get_contents的优势:直接读取整个文件内容为字符串,比fopen+fread更简洁,适合处理这类需要整体操作的文本文件。
  • 移除空格的两种方式:
    • preg_replace('/\s+/', '', $fileContent):移除所有空白字符(包括多个连续空格、换行、制表符)
    • str_replace(' ', '', $fileContent):仅移除单个空格,保留换行等其他空白(如果需要的话)
  • 上传检查:增加了文件上传错误检查,避免因上传失败导致后续代码报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:08:40