Lo mejor es leerlo segmento a segmento, para que el tamaño en memoria de las
variables no sea excesivo.
Todo el código es operativo, tendras que cambiar las CONSTANTES para que se
te adequen a tu caso.
NBYTES: segmento de bytes que seran leidos de fichero origen. En tu caso:
2048
NCHAR: numero de caracteres antes de cortar la cadena. En tu caso: 60
FIN: cadena que pondrás despues de cada subcadena. En tu caso: "\n!
ARXORIG: nombre realtivo o absoluto del fichero original. En tu caso:
desconocido
ARXDEST: nombre relatico o absoluto del fichero destino. En tu caso:
desconocido
ANTES DE PROBARLO con el fichero de 11 Megas, mejor que lo pruebes con los
datos que yo he usado para hacer las pruebas.
Ala, espero que esto te funcione como tu quieres. Un saludo.
<html>
<head>
<title> Código por JM Aribau</title>
<body>
<?php
$fo = fopen("origen.txt", "w");
$var = "Returns a string with str wrapped at the column number specified by
the optional width parameter. The line is broken using the (optional) break
parameter.";
fwrite($fo,$var);
fclose($fo);
define('NBYTES',30);
define('NCHAR',10);
define('ARXORIG','origen.txt');
define('ARXDEST','destino.txt');
define('FIN', "\n");
$fo = fopen(ARXORIG,'r');
$fd = fopen(ARXDEST,'w');
$resto = NULL;
while (!feof($fo)) {
$origen = fread($fo,NCHAR);
$origen = $resto.$origen;
$destino = NULL;
while (strlen($origen) >= NCHAR) {
$destino .= substr($origen,0,NCHAR).FIN;
$origen = substr_replace($origen,'',0,NCHAR);
}
if (strlen($origen) > 0) {
if (!feof($fo)) {
$resto =$origen;
} else {
$destino .= $origen.FIN;
}
} else {
$resto = NULL;
}
fwrite($fd,$destino);
}
fclose($fd);
fclose($fo);
$fo = fopen(ARXDEST,'r');
$destino = fread($fo,filesize(ARXDEST));
$format2 = chunk_split($var,NCHAR,FIN);
$style = "style='float:left; border:1px solid; margin: 10px; padding:5px;'";
echo "<div style='font-family: monospace;' >";
echo "<div $style> <pre>$destino</pre> </div>";
echo "<div $style> <pre>$format2</pre> </div>";
echo "</div>";
?>
</body>
</html>
Josep Ma. Aribau Cano
jm@infodos.com
www.infodos.com
----- Original Message -----
From: "Toroworks" <toroworks@telefonica.net>
To: <lista@phpes.com>
Sent: Sunday, January 11, 2004 10:20 PM
Subject: [PHP-ES] recorrer ficheros
Hola a tod@s,
Espero que me podais ayudar, tengo que convertir un fichero de texto que
esta todo en una linea y formatearlo colocando un retorno de linea "\r" cada
60 caracteres.
El problema es que el fichero es grandioso (mas de 11 megas) y no cabe todo
en una sola variable para modificarlo
Para hacer los retornos lo hago de la siguiente forma:
$formateado=chunk_split($bruto,60,"\r");
mi problema es como asignar todo el contenido del fichero a la variable
$bruto
Gracias ante todo por la ayuda
---------------------------------------------------------------------
Archivo On-line:
http://www.phpes.com/via news: news://news.phpes.com/
Manual PHP en español:
http://www.php.net/manual/es/Para dar de baja la suscripción, mande un mensaje a:
lista-unsubscribe@phpes.com