[PHP] String parsen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Profidiam
  • Registratie: December 2001
  • Laatst online: 25-01 22:25
Ik heb een leuke string zoals :

Mar 29 17:59:05 kgswl-mail amavis[27052]: (27052-09) INFECTED (Worm.SomeFool.Gen-1), <rudi_lammens@pandora.be> -> <leraarsheirbrug@pi.be>, quarantine virus-20040329-175905-27052-09, Message-ID: <20040329155903.B9F851106D@mail.ksgwl.be>, Hits:

en ik wil daarvan alle losse onderdelen in een array stoppen. Ik vroeg mij af hoe ik dit het beste kan doen ?
Gewoon exploden vind ik riskant, want als er ergens een spatie extra opduikt zit ik met de gebakken peren. Ik heb al eea geprobeerd met sscanf() om zodoende bepaalde dingen in een aantal vars te plaatsen, maar php flipt nogal op het feit dat er , en >< aanwezig is in die string, om een of andere reden ziet hij dit niet als een %s teken. Het enige wat ik wil ik zoiets : $x = "%s %d %s %s %s[%d]: (%d-%d) %s (%s), <%s> -> <%s>, %s %s, Message-ID: <%s>"
en dan is $x een array met waarden.
Bestaat hier een andere oplossing voor ?

Da RuBBaH DuCK SKWaT - Ellen what did ye do ?- een test


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom gebruik je geen regular expressions?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Profidiam
  • Registratie: December 2001
  • Laatst online: 25-01 22:25
Kan je met regex in 1 keer die waarden eruit halen ? Of moet ik dat dan met zeg maar 10 verschillende regexen eruit halen, want dit zou dan terug niet de bedoeling zijn.

Da RuBBaH DuCK SKWaT - Ellen what did ye do ?- een test


Acties:
  • 0 Henk 'm!

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 09-09 17:11

Gertjan

mmmm, beer...

met preg_match, preg_replace en preg_split (of de ereg versies dan) zou dit 'makkelijk' moeten kunnen

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Profidiam schreef op 30 maart 2004 @ 16:45:
Kan je met regex in 1 keer die waarden eruit halen ? Of moet ik dat dan met zeg maar 10 verschillende regexen eruit halen, want dit zou dan terug niet de bedoeling zijn.
Dat kan juist in 1 keer ja, met preg_match of ereg_match

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Profidiam
  • Registratie: December 2001
  • Laatst online: 25-01 22:25
bedankt voor alle tips, na wat zoeken is dit het stukje code dat mijn probleem oplost :
PHP:
1
$n = preg_match("/^\(\d*-\d*\) \S* \((\S*)\), <(\S*)> -> <(\S*)>, (\S*) (\S*), Message-ID: <(\S*)>/",$entry[5],$match);

Da RuBBaH DuCK SKWaT - Ellen what did ye do ?- een test


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Let er op dat je de \ zelf in php strings sowieso moet escapen, en in de regex nog een keer. Gebruik dus altijd dubbele \'s. De reden dat het werkt is omdat de tekens waar jij je voor zet geen betekenis hebben voor php, en dus gaat het niet fout. Mocht er echter ooit in php een \d worden toegevoegd dan werkt jouw code niet meer, het is dus good practice om niet uit te gaan van de tekens die momenteel gebruikt worden en de \ dus altijd te escapen

(als je dus letterlijk wilt matchen op een \ dan zul je "\\\\" moeten specificeren)

[ Voor 44% gewijzigd door .oisyn op 30-03-2004 17:12 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Profidiam
  • Registratie: December 2001
  • Laatst online: 25-01 22:25
super :)

Da RuBBaH DuCK SKWaT - Ellen what did ye do ?- een test

Pagina: 1