Likes Likes:  0
Resultaten 1 tot 4 van de 4
Geen

Onderwerp: plan van aanpak

  1. #1
    Matthijs de Z
    plan van aanpak
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    plan van aanpak

    Hoi,

    Ik moet een scriptje maken voor het vervangen van bepaalde waarden in een
    text file. Die ziet er ongeveer zo uit.

    ABC,20040101,D,000000,10,12,9,11,14611,0
    ABC,20040102,D,000000,12,13,9,9,113451,0
    ABC,20040103,D,000000,10,11,8,9,1144341,0
    ABC,20040104,D,000000,12,14,1,11,114341,0
    QWE,20040101,D,000000,29,30,28,29,1114343,0
    QWE,20040102,D,000000,33,34,30,32,1147643,0
    QWE,20040103,D,000000,31,33,30,32,155443,0

    En van ABC en QWE is de data rij een stuk langer dan het voorbeeld van
    hierboven en er zijn nog veel meer soorten dan ABC en QWE.

    Nu heb ik een andere file (vervangreeksen)met bijvoorbeeld dit:
    ABC,XYZ-AMS
    QWE,RTY-AMS
    D,60
    000000,1200000

    Wat wil ik doen: Ik moet de gegevens die voor de comma staan in de file
    vervangreeksen vervangen door de gegevens die er achter staan. Dus je krijgt
    dan (om regel 1 van het origineel te nemen) dit:

    XYZ-AMS,20040101,60,120000,10,12,9,11,14611,0

    Nu dacht ik, ik lees die hele originele file in als string, maak een while
    loop waarbij ik de file vervangreeksen regel voor regel doorloop en gooi een
    eregi_replace over de string heen en sla de string na de complete loop op in
    een file. Maar de datafile is ongeveer 25 MB en er moeten ongeveer 300
    dingen vervangen worden.

    Ik wil het graag zonder MySQl oplossen (aangezien ik daar niet in thuis ben)
    hoe kan ik dit het beste doen? Is het verstandig het te doen zoals ik
    ongeveer beschrijf, of kan ik beter vanuit een andere hoek beginnen?
    Groeten,

    Matthijs



  2. #2
    Daniel Tryba
    plan van aanpak
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: plan van aanpak

    Matthijs de Z <haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
    > ABC,20040101,D,000000,10,12,9,11,14611,0

    ....
    > QWE,20040103,D,000000,31,33,30,32,155443,0
    >
    > En van ABC en QWE is de data rij een stuk langer dan het voorbeeld van
    > hierboven en er zijn nog veel meer soorten dan ABC en QWE.
    >
    > Nu heb ik een andere file (vervangreeksen)met bijvoorbeeld dit:
    > ABC,XYZ-AMS
    > QWE,RTY-AMS
    > D,60
    > 000000,1200000

    [vervangen]
    > Nu dacht ik, ik lees die hele originele file in als string, maak een while
    > loop waarbij ik de file vervangreeksen regel voor regel doorloop en gooi een
    > eregi_replace over de string heen en sla de string na de complete loop op in
    > een file. Maar de datafile is ongeveer 25 MB en er moeten ongeveer 300
    > dingen vervangen worden.


    eregi_replace lijkt op php?

    Wachtend op een perl-oneliner kan je alvast het volgende doen:

    lees de vervangreeksen in regel voor regel, split op ',' en zet alles
    voor de ',' in het array $orig en na in array $repl.

    Open de datafile en open een nieuwe file, lees datafile regel voor regel
    in en schrijf dan 'str_replace($orig, $repl, $line)' weg naar de nieuwe
    file.

    Overschrijf het origineel.

    Geheugen gebruik blijft dan beperkt (1 regel per keer + de omvang van de
    orig/repl arrays).

    Benodigde php functies:
    fopen, flock , fputs, fgets, str_replace, fclose, tempnam, explode, rtrim....

    --

    Daniel Tryba


  3. #3
    Matthijs de Z
    plan van aanpak
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: plan van aanpak

    > eregi_replace lijkt op php?

    Idd, PHP. Even vergeten te melden.

    > Wachtend op een perl-oneliner kan je alvast het volgende doen:
    >
    > lees de vervangreeksen in regel voor regel,


    Met fgets

    >split op ','


    yep, met explode

    >en zet alles
    > voor de ',' in het array $orig en na in array $repl.


    eitje tot nu toe

    > Open de datafile en open een nieuwe file, lees datafile regel voor regel
    > in


    Weer met fgets

    >en schrijf dan 'str_replace($orig, $repl, $line)' weg naar de nieuwe
    > file.


    Met fputs

    > Overschrijf het origineel.
    >
    > Geheugen gebruik blijft dan beperkt (1 regel per keer + de omvang van de
    > orig/repl arrays).
    >
    > Benodigde php functies:
    > fopen, flock , fputs, fgets, str_replace, fclose, tempnam, explode,

    rtrim....

    OK, dus het kan in ieder geval wel zo. Ga ik in het weekend even lekker
    rotzooien. Wat is overigens het voordeel van str_replace boven
    eregi_replace?
    Mazzel,

    Matthijs



  4. #4
    Daniel Tryba
    plan van aanpak
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: plan van aanpak

    Matthijs de Z <haalallesvoorhetstreepjeplushetstreepjezelfweg-mldz@hotmail.com> wrote:
    > Wat is overigens het voordeel van str_replace boven
    > eregi_replace?


    Afhankelijk van de toepassing, voor het simpele vervangen van strings
    (dus zonder context) is 1 str_replace(array,array,string), vele vele
    vele malen sneller dan een x aantal reguliere expressies.

    --

    Daniel Tryba


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics