[RegExp / PHP] Hoe escape ik komma's ?

Pagina: 1
Acties:

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55
Hoi allemaal,

Ik zit met het volgende probleem (Al de hele middag).

Een input bestand heeft de volgende indeling (gedeelte)
code:
1
"9214767","Specificatie","15,1~ High Design LCD Monitor|Resolutie 1024x768|",0

Nu wil ik deze waarden gaan checken en als ze goed zijn inserten in een database. (goh, wat orgineel ;) )...

Wat ik bedacht had is dat ik de regel split op "," en daarna de array doorloop en de items check. Dat gaat allemaal goed, maar nu zie je dat er in de omschrijving (15,1) ook een komma staat. Deze split ie natuurlijk ook.

Ik wilde nu een regexp maken waarmee je de komma's die in de tekst (dus geen scheidingsteken) staan kan vervangen door \, of iets dergelijks.
PHP:
1
<?$artikel = ereg_replace("\"(.*),(.*)\"", "\"\\1\\,\\2\"", $artikel);?>

levert het volgende (voorbeeld) op :
code:
1
2
voor: "123456","Omschrijving met, een komma , of 2"
na : "123456","Omschrijving met, een komma \, of 2"

Hij vervangt dus alleen de tweede komma. 'k heb al zitten spelen met spaties ertussen (in de regexp), maar ik krijg het niet werkend. Wie helpt ?

SIZE does matter.
"You're go at throttle up!"


  • Grum
  • Registratie: Juni 2001
  • Niet online
is het niet simpler om een explode op "," te doen dan alle delen door str_replace duwen en dan weer imploden met "," ?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55
Die volg ik niet helemaal.

Ik kan me vergissen, maar explode'n levert toch hetzelfde probleem op. Hij gebruikt de , in de omschrijving dan toch ook als separator ?

Het gaat er dus om dat PHP bij een explode/split de komma's in een veld negeert. En splitten op "," werkt ook niet, want er staan ook velden in zonder quotes.. zie laatste veld.

SIZE does matter.
"You're go at throttle up!"


  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
preg_match op een komma waar geen \ voor staat?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 11-09 20:55
Op dinsdag 12 maart 2002 15:51 schreef brammetje het volgende:
preg_match op een komma waar geen \ voor staat?
:?

Die staan er juist niet. Zie eerste post, dat is mijn originele input. En ik wil dus gewoon een array krijgen met alle items erin per regel.

SIZE does matter.
"You're go at throttle up!"


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

Janoz

Moderator Devschuur®

!litemod

Mischien is het makkelijker om zelf ff een parser in elkaar te zetten. ALs je dan je regel doorleest kun je een state bijhouden om te kijken of je binnen een string bent of niet. Afhankelijk van die state splits je vervolgens je string op. (Een state overgang vindt natuurlijk alleen plaats waneer je een " tegenkomt, en niet bij een \")

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

Pagina: 1