phpbar.de logo

Mailinglisten-Archive

[php] Regex Problem (OT)

[php] Regex Problem (OT)

Roland Braband r.braband at web.de
Don Mar 11 14:29:00 CET 2004


Sebastian Mendel wrote:

>entweder in einem String:
>// INT   ,INT   ,STRING               ,INT    ,STRING
>'°^[0-9]+,*[0-9]+,\'([^\']*|(\\\')*)*\',[0-9]+,\'([^\']*|(\\\')*)*\'$°'

Da fällt mir auf das es keine Einschränkung betreffend der
Anzahl der Felder (Abschnitte) und auch keine feste
Indexierung derer besteht.
Also können es mehrere Felder sein und auch in anderen
Kombinationen:

INT, STRING,INT
STRING,STRING,STRING,INT

Was das ganze sicherliche von der Idee das über CSV
zu vereinfachen abweicht. Ein Fehler meinerseits.

>oder du splittest es einfach an den Kommastellen und übprüfst dann jedes
>einzelne:
>für jede zeile
>{
>   split bei komma
>   überpfüfen jedes feldes (is_string, is_int, ...)
>}

Das ist der richtige Ansatz und auch die Richtung die ich weiter verfolge.
Aber ein einfaches aufsplitten mit split() führt nicht zum Ergebnis, da:

INT, INT, STRING, INT, STRING
1    , 2     , 'test'       , 3     ,'$richtig->essen(\'fettarmes\',
\'essen\', true)'    => true

einen String enthält der selbst Kommata beinhaltet!
Also muss ich über preg_split() einen Term finden
der das nach folgenden Regeln splittet:

(NACH ,) ODER (, UND vorheriges (' OHNE vorheriges\))

sebst dann ist nicht sicher ob nicht:

1    , 2     , 'test'       , 3     ,'$richtig->essen(\'fettarmes\',
\'essen', true)'    => true
                                            slash bevor singel Quote
fehlt ---^
eine exeption schmeisst was nicht sein soll ich will ja genau diesen Fall
filtern
und 'reparieren'!
Also sollte die Regel heissen:

(NACH ' OHNE vorherigen \) UND ,

was aber nicht den ersten Abschnitt matcht :(

Anderer Lösungsweg:
ein:  $regs = "/'([^'].*)'/sim";
preg_match_all($regs, $string, $match);
gibt mir den gesuchten String als Kommataseparierte Liste zurück,
ein: $regs = "/'([^'].*?)'/sim";
splittet sogar diese liste nach Kommata, erfüllt aber nicht die Bedingung
das Php-Code
erhalten bleiben soll! Ich drehe mich also im Kreis...

>p.s. irgendwer hatte hier mal irgendwo in der Liste ein Script gepostet
>womit man relativ einfach reguläre Ausdrücke ausprobieren konnte ...
>weiß leider nicht mehr wo es das gab oder wer das vorgeschlagen hatte ...

Der 'Regular Expression Editor' von PHPEdit Network ist auch nicht schlecht.

P.S.: jetzt freue ich mich richtig über die rege Beteiligung ;)

Gruss
Roland Braband





php::bar PHP Wiki   -   Listenarchive