Toon posts:

[Mysql/php] \ n probleem linewraps ongedaan maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
data uit een bestand:

1|gijs|3|645
6|piet|3|6123
2|stomme
tekst|3|64123
3|john|3|612315
4|aby|3|6123

Nu wil ik dus een:

while (!feof($fp))
{
$line = fgets($fp,200);
$split = split("\|", $line);
}
gebruiken om het dan in een mysql DB te zetten. Alleen bij het tweede veld krijg ik dan dus een probleem door die linebreak.

Is er iets om dit te fixen/omweg? Dit omdat het om 970000 lines gaat..dat wil ik dus niet met de hand gaan doen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

In de manual bij de file functies staat volgens mij wel iets om een bestand zo in te lezen dat elke regel een element word van een array.. Vervolgens kun je per element de string exploden op |.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

trim() gebruiken op je $line :?

En verder de manual doornemen bij de stringfuncties?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Na overleg met de topicstarter weer open :)

Verwijderd

Topicstarter
Bedankt ACM voor het openen.


Wat het probleem is is line wrapping.

dus "dithadopeen
lijngemoetenmaarwastelang"
moet ik weer op 1 regel hebben.

Kan dit in php?

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 27-08 21:32
Ik denk dat het handiger is als je je data anders indeelt. Bijv. elke lijn met een ; scheiden.
Je kunt wel moeilijk gaan doen met allerlei string-functies, maar als het mogelijk is om de representatie te veranderen lijkt mij dit veel makkelijker.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Topicstarter
Ja, maar ik heb nu eenmaal alleen het bestand met soms dus ergens een LINE die in 2 lines is gezet..

hoe los ik dat op?

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 09-09 15:09

Apache

amateur software devver

hier stond onzin :D

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
niemand een zinnig antwoordt??

Verwijderd

Ik denk dat je dit bedoeld, ff in dit voorbeeld is de data geen file maar gelijk al ff een bestand, want je weet wel hoe je een bestand opent e.d.

Dus:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$explodeer = explode("\n", $bestand); // haal alles uit elkaar op basis van \n en het wordt een array
$aantal = count($explodeer);

for($x = 0; $x < $aantal; $x++) {

$split = explode("|", $explodeer[$x]);

echo "<p>Getal: " . $split[1] . "<br>Naam: " . $split[2] . "<br>ID: " . $split[3] . "</p>"; // verder uit te breiden...

}
?>

Als je dit bedoeld...

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:52

Pelle

🚴‍♂️

Op woensdag 27 februari 2002 20:19 schreef worldpunch het volgende:
niemand een zinnig antwoordt??
Rustig, rustig :)

Denk niet dat het makkelijk met een standaard functie op te lossen is.

Voorzetje:
code:
1
2
3
4
5
6
7
8
9
10
zolang niet eof
    aantal | = 0
    lees regel
    tel aantal |
    zolang aantal | < 3
      lees volgende regel
    eind zolang
    vervang "\n" door " "
    split regel
eind zolang

Oftewel, tel je aantal |'s, net zolang tot je de 3e bent tegengekomen, waarna je dus weet dat op de volgende regel je volgende record gaat beginnen.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:52

Pelle

🚴‍♂️

[b]Op woensdag 27 februari 2002 20:37 schreef Markuz
Als je dit bedoeld...
Nee, want nu explode je op een "\n", maar daarmee splits je dus ook bepaalde records in 2 stukken.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op woensdag 27 februari 2002 20:42 schreef Pelle het volgende:

[..]

Nee, want nu explode je op een "\n", maar daarmee splits je dus ook bepaalde records in 2 stukken.
Maar je hebt wel een mooi begin :)... Als je nu elk van die elementen gaat splitten op |, kun je vervolgens je hele array doorlopen, en zodra er te weinig elementen in die array zitten deze joinen met de volgende array.. Ik denk dat dat de makkelijkste oplossing is.. (Het eerder genoemde pseudo algoritme zorgt er namelijk ook voor dat telkens het eerste veld met het laatste veld van het volgende record wordt gemerged)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1