[php] explode probleem

Pagina: 1
Acties:

  • HenkS
  • Registratie: Mei 2000
  • Nu online

HenkS

Da_king alias HenkS

Topicstarter
hallo,

ik moet een tekst file inlezen en verwerken...

deze file bestaat uit 2 kolommen....

nu wilde ik deze scheiden dmv explode... maar omdat er tussen de 1e en 2e kolom, soms 1 spatie staat, maar soms ook 2,3 of 4
werkt: $test = explode(" ", $zooi); niet, omdat bij 2 spaties, de 2e kolom niet in $test[1] staat, maar in $test[2]

weet iemand hoe ik dit makkelijk kan oplossen, want i don't know

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Doe het met preg! :D

Rustacean


  • HenkS
  • Registratie: Mei 2000
  • Nu online

HenkS

Da_king alias HenkS

Topicstarter
was net bezig :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Als het in kolommen staat heeft elk veld toch gewoon een vaste breedte? Waarom werk je dan niet gewoon met een substring variant? Je weet de begin positie en de eindpositie is gewoon 1 plek voor het begin van de volgende. Door vervolgens nog trim over de resultaten heen te halen zullen de achterste spaties ook weggehaald worden.

PS: Weet je trouwens zeker of het geen tabs zijn?

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


  • HenkS
  • Registratie: Mei 2000
  • Nu online

HenkS

Da_king alias HenkS

Topicstarter
ehmm het lukt niet zo, ben niet zo'n held in expressies, maar wat is hier fout aan:

$text = ereg_replace("\s+", " ", $line);


ps: kan zijn dat het tabs zijn, maar soms ook maar echt 1 of 2 spaties/.... in ieder geval lege ruimte...

edit:

kolommen hebben geen vaste breedte... 1e kolom is bv ipadres

  • HenkS
  • Registratie: Mei 2000
  • Nu online

HenkS

Da_king alias HenkS

Topicstarter
het is al gelukt, dankzij de leuke usernotes op php.net

oplossing:

$text = ereg_replace(" +", " ", $line);

Verwijderd

Op dinsdag 07 mei 2002 15:22 schreef HenkS het volgende:
het is al gelukt, dankzij de leuke usernotes op php.net

oplossing:

$text = ereg_replace(" +", " ", $line);
Ik zie niet echt waarom dit een goede oplossing zou zijn op je eerste vraag. Dit vervangt alleen een reeks van één of meer spaties door één spatie, verder splitst het niets en stopt het zeker niets in een array. Ook werkt dit niet met tabs.

Wat ik zou doen is het volgende:
PHP:
1
<?$test = preg_split("/\s+/", $zooi);?>

dit splitst de string op één of meer voorkomens van spaties of tabs (als je achter de laatste / een s zet ook op enters) en geeft een array terug met de verschillende kolommen.

verdere info: http://www.php.net/preg_split ;)

  • HenkS
  • Registratie: Mei 2000
  • Nu online

HenkS

Da_king alias HenkS

Topicstarter
tja zo kan het ook, ik deed dus eerst mijn oplossing en dan door explode(" ", $string); gooien


edit:

heb jouw oplossing geprobeerd en werkt mooi, (code weer 1 regel korter)

thanks
Pagina: 1