Backreference?
heinetz
- php
0 Hugo Egon Balder0 MudGuard0 heinetz
Hallo Forum,
ich komme gerade mit meinem Pattern für preg_replace gedanklich nicht weiter. Vielleicht kann mir jemand einen Anstoss geben.
((?:[ ]?[0-9]){6,})
Mit diesem Muster suche ich nach Zeichenketten, bestehend aus mindestens 6 Integers, die optional durch Leerzeichen voneinander getrennt sind. Mit dem Muster finde ich also bspw.
1 2 345 6
Das Ergebnis habe ich als Backreference in $1 zur Verfügung. Nun würde ich aber gerne die
Leerzeichen entfernen. Komme ich da ohne Callback aus ?
danke für Tipps und
best gruesse,
heinetz
Hallo heinetz,
((?:[ ]?[0-9]){6,})
Besser, weil übersichtlicher, finde ich: ~[1]|\s{6}$~
Das Ergebnis habe ich als Backreference in $1 zur Verfügung. Nun würde ich aber gerne die
Leerzeichen entfernen. Komme ich da ohne Callback aus ?
$string = '1 2 345 6';
$string = str_replace(' ', '', $string);
var_dump($string);
Wo liegt das Problem?
Liebe Grüße
Hugo Egon Balder
0-9 ↩︎
$string = '1 2 345 6';
$string = str_replace(' ', '', $string);
var_dump($string);
>
> Wo liegt das Problem?
nirgends, WIE der Callback in dem Fall aussehen muss ist nicht die Frage, sondern OB
sich das auch ohne Callback machen lässt.
gruss,
heinetz
Besser, weil übersichtlicher, finde ich: ~[1]|\s{6}$~
Das matcht auf eine bliebige zeichenkette die 6 Zeichen lang ist und aus Whitespace-Zeichen oder Ziffern besteht - also z.B. auch "01234 " oder " "
Richtig. Ich habe nämlich das Ziel des OP (fälschlicherweise) so verstanden, dass es _insgesamt_ 6 Zeichen sind. Ich sehe jetzt erst, dass ich das falsch gelesen habe und es 6 int _plus_ eveueller Abstand sind.
Bei insgesamt 6 int plus event. Leerzeichen würde ich es so lösen:
~^\s*([0-9]\s*){6}$~
0-9 ↩︎
Gut, weil Du es übersichtlicher findest, würdest Du das so lösen. Aber auch damit wäre ich die Leerzeichen in meiner backreference doch nicht los.
Hi,
((?:[ ]?[0-9]){6,})
Mit diesem Muster suche ich nach Zeichenketten, bestehend aus mindestens 6 Integers, die optional durch Leerzeichen voneinander getrennt sind. Mit dem Muster finde ich also bspw.
1 2 345 6
Das Ergebnis habe ich als Backreference in $1 zur Verfügung. Nun würde ich aber gerne die
Leerzeichen entfernen. Komme ich da ohne Callback aus ?
Du darfst die Leerzeichen nicht matchen - also nur einen Lookahead/Lookbehind für die Leerzeichen machen.
cu,
Andreas
Ok, die Idee klingt vernünftig. Aber ich krieg's nicht hin und werd's wohl mit nem Callback machen ...
gruss,
heinetz