FAQ
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

Search Discussions

  • Rafael Salazar at Jan 12, 2004 at 3:20 am

    Toroworks wrote:
    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
    Interesante, no sabía que las variables tenían un límite inferior a
    11MB, me pregunto exactamente de cuánto será...

    En cuanto al problema... ¿qué te parece si lo lees por segmentos?
    No tengo idea de cómo estás leyendo el archivo, pero la función fread() te
    permite definir la cantidad de caracteres a leer de un archivo abierto (de
    hecho es requerido)
    Para hacer los retornos lo hago de la siguiente forma:

    $formateado=chunk_split($bruto,60,"\r");
    Si te importa que no se corten palabras podrías probar con la
    función wordwrap() —aunque no creo que sea el caso.
    --
    Rafael
  • Jm aribau at Jan 12, 2004 at 4:35 am
    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
  • Toroworks at Jan 13, 2004 at 12:30 am
    Gracias por la ayuda, es justo lo que necesitaba, estudiaré tu script. Tengo
    mucho que aprender todavia



    "Jm Aribau" <jm@infodos.com> escribió en el mensaje
    news:002801c3d8bd$6e2d7fc0$020044c0@com...
    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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJan 11, '04 at 10:15p
activeJan 13, '04 at 12:30a
posts4
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase