Avatar billede superwulff Nybegynder
16. februar 2012 - 09:45 Der er 10 kommentarer og
1 løsning

PHP import af TAB delimiteret txt fil - spring over den første linje

Hej

Jeg sidder og roder med et PHP script der importerer en .txt fil og sætter den op i en tabel

Txt filen er et dump fra en database og bliver opdateret automatisk hvert x'ne sekund, desværre har jeg ikke mulighed for at redigere i txt filen (og derfor ikke mulighed for at udkommentere)

Jeg vil forfærdeligt gerne have mit script til at springe over den første linje i dumpet da den er delimiteret anderledes og får derfor det hele til at se forkert ud (og den er komplet unødvendig)

Min kode ser således ud

                    $theFile=fopen("dump.txt","r");
         
if(!$theFile){ print "<p>fejl!!</p>";
                    }   
                else{
                        while(!feof($theFile)){
                            $data=explode("\t", fgets($theFile));
                           
                            print "<tr>\n";
                        for($i=0; $i<14; $i++){
                            print "<td>" . $data[$i] . "</td>\n";
                        }
                    print "</tr>\n";
                    }
                }           
                fclose($theFile);
                ?>
Avatar billede expnet Seniormester
16. februar 2012 - 10:07 #1
$theFile=fopen("dump.txt","r");
         
if(!$theFile){ print "<p>fejl!!</p>";
                    }   
                else{
                        while(!feof($theFile)){
                            $data=explode("\t", fgets($theFile));
                            $removefirstline = array_shift($data);
                            print "<tr>\n";
                        for($i=0; $i<14; $i++){
                            print "<td>" . $data[$i] . "</td>\n";
                        }
                    print "</tr>\n";
                    }
                }           
                fclose($theFile);
                ?>
Avatar billede superwulff Nybegynder
16. februar 2012 - 11:06 #2
Måske skulle jeg have været mere præcis, jeg vil have den til at springe over den første række, ikke kollonne :-)

Den kode du skrev fjerner første kollonne som jeg gerne vil beholde, det er rækken der skal væk :-)
Avatar billede superwulff Nybegynder
16. februar 2012 - 11:09 #3
er det muligt at bede explode starte fra linje 2 i txt filen ?
Avatar billede expnet Seniormester
16. februar 2012 - 11:28 #4
har mulighed for at dump lidt fra din tekst fil så man bedre kan skrive en kode til den
Avatar billede majbom Novice
16. februar 2012 - 11:43 #5
nu har jeg kun lige skimtet din kode, men kan du ikke bare starte din løkke på 1 i stedet for 0?
Avatar billede superwulff Nybegynder
16. februar 2012 - 12:14 #6
@Splazz
Det giver sammt resultat, fjerner første kolonne ikke første række..

@Expnet

Filen ser sålede ud:

Værdi1 værdi2;værdi3;værdi4;værdi5
Værdi1 værdi2 værdi3 værdi4 værdi5
Værdi1 værdi2 værdi3 værdi4 værdi5
Værdi1 værdi2 værdi3 værdi4 værdi5

Som sagt virker det egentlig fint, men første række i tabellen det bliver spyttet ud i i PHP filen ser helt forker ud fordi den første linje af en eller anden grund bruger semikolon som seperator hvor resten bruger [TAB]
Avatar billede inteeeL Nybegynder
16. februar 2012 - 12:38 #7
Du kan starte med at explode linjeskift (\n), bruge array_shift til at fjerne første element og afslutningsvis explode TAB ud fra det "nye" array. Altså følgende linjer skal i bruge (du må selv lige bikse det sammen):

explodeLines = explode("\n", $data);
removeLine = array_shift( $explodeLines);
Avatar billede inteeeL Nybegynder
16. februar 2012 - 12:40 #8
Og variablerne skal selvfølgelig lige et dollartegn ($).
Avatar billede olebole Juniormester
16. februar 2012 - 16:08 #9
<ole>

Man kunne jo også bruge en af PHP's indbyggede funktioner til at håndtere CSV-filer.

/mvh
</bole>
Avatar billede superwulff Nybegynder
21. februar 2012 - 10:14 #10
Ja, bortset fra problemer er at første linje var semicolon sepereret og resten af linjerne tab-sepereret..

Men jeg fik i sidste ende overtalt dem der står for udtrækkende til at lave det som rent semicolon sepereret og brugte min oprindelige kode med semikolon istedet for tab..

Den første linje er stadig irrelevant men nu får den ikke resten til at se dumt ud..

Tak for hjælpen
Avatar billede superwulff Nybegynder
23. februar 2012 - 15:54 #11
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester