Bueno, siguen sin darme los números
porque
6 +
1 (espacio) +
16 +
2 (espacios)+
3 +
2 (espacios)+
5
= 35 y no 33, daría 33 si siempre separases por un espacio
Igual te hice esto
Código PHP:
Ver original<?php
// linea en que coincide todo menos el nombre
$id="999999";
$nombre="AAAA AAAA AA AAAA AAAA AAAAA AAAA";
$num_uno="999";
$num_dos="99999";
// usamos tabulaciones como separadores
$linea = file_put_contents("lista.txt","$id\t". substr($nombre,0,16). "\t\t$num_uno\t\t$num_dos\n", FILE_APPEND
| LOCK_EX
);
// con las longitudes inexactas
$id="444";
$id = str_pad($id, 6,' ',STR_PAD_LEFT
); $nombre="XX XXXX ZZ DDOOOW"; // W es el caracter 17, se recorta
$nombre = substr($nombre,0,16); $nombre = str_pad($nombre, 16,' ',STR_PAD_RIGHT
); $num_uno="23";
$num_uno = str_pad($num_uno, 3,' ',STR_PAD_LEFT
); $num_dos="5555";
$num_dos = str_pad($num_dos, 5,' ',STR_PAD_LEFT
); // usamos espacios en blanco como separadores
$linea = file_put_contents("lista.txt","$id $nombre $num_uno $num_dos\n", FILE_APPEND
| LOCK_EX
);
echo "<pre>";
include('lista.txt');
echo "</pre>";
}
?>
usar tabulaciones como separadores puede ser util para procesar el archivo de texto posteriormente ya que el nombre puede contener espacios en blanco
Saludos