Forum Doku Wiki Blog

Forumsarchiv 2002, Juli
Regulärer Ausdruck (wie geht das eigentlich?)

archivierte Beiträge lesen

  1. (PHP) Regulärer Ausdruck (wie geht das eigentlich?) von Saadat, 04. 07. 2002, 19:41

Regulärer Ausdruck (wie geht das eigentlich?)

Der folgende Beitrag wurde am 04. 07. 2002, 19:41 Uhr von Saadat veröffentlicht.

Hallo allerseits,

ich möchte aus einer Zeichenkette alle "-" Zeichen, die zwischen den Postleitzahlen stehen, durch ein anderes Zeichen ersetzen.

Beispiel: 26588-26989

Wie lautet der reguläre Ausdruck, der nur die "-" Zeichen zwischen den Postleitzahlen findet und durch was anderes ersetzt, d. h. es stehen auch andere "-" Zeichen innerhalb der Zeichenkette, diese sollen aber davon unberührt bleiben.

Kann mir jemand mit seiner/ihrer kreativen Idee helfen?

Danke im Voraus!

Gruß

Saadat

Regulärer Ausdruck (wie geht das eigentlich?)

Der folgende Beitrag wurde am 04. 07. 2002, 20:23 Uhr von Carsten veröffentlicht.

Hallo Saadat!


> Beispiel: 26588-26989

> Wie lautet der reguläre Ausdruck, der nur die "-" Zeichen zwischen den Postleitzahlen findet und durch was anderes ersetzt, d. h. es stehen auch andere "-" Zeichen innerhalb der Zeichenkette, diese sollen aber davon unberührt bleiben.

Welche Zeichen sollen vorkommen:
Fünf Ziffern ein Bindestrich und noch fünf Ziffern.
also erstaml Ziffern, darauf passt \d.
Dann 5 Stück: \d{5}
Der Bindstrich passt auf den Bindestrich.
Zusammengebaut:
  \d{5}-\d{5}
Nun möchtest du im Ergebnis ja die Ziffern wieder haben, dazu muss der jeweils passende Teil geklammert werden. (Dann kann man drauf zugreifen)
 (\d{5})-(\d{5})
http://www.php.net/manual/en/pcre.pattern.syntax.php

So, jetzt das ganze noch in die preg_replace funktion einsetzen:

 $neu=preg_replace("/(\d{5})-(\d{5})/","\\1-\\2",$alt);
                                          |   |
                                          |   +--zweite Klammer
                                          +------erste Klammer
                                                 einsetzen

Gruss,
 Carsten

Regulärer Ausdruck (wie geht das eigentlich?)

Der folgende Beitrag wurde am 04. 07. 2002, 20:31 Uhr von Arne P. veröffentlicht.

Hi.

Probier es mal hiermit:

  $t = "26588-26989";
  $anderes_zeichen = "x";
  $t = preg_replace("/(\d{5})-(\d{5})/","\\1$anderes_zeichen\\2",$t);

Erklärungen:

Zeile 1+2: leicht verständlich, einfache Variablenzuweisung.
Zeile 3: Reguläre Substitution nach Perl-Syntax.

/ /  schließt die Regex ein.
\d ist eine Ziffer, wir brauchen 5 Stück davon, dafür ist die {5} dahinter. \d{5} bedeutet: genau 5 Ziffern.
Die Klammern sind dazu da, alles was vor und hinter dem - steht, einzufangen, später kann per \1 und \2 (hier per \ escaped, daher \\1 und \\2) wieder aufgerufen werden.

Kurz: es werden 5 Ziffern, dann ein -, dann wieder 5 Ziffern gesucht. Wenn dies zutrifft, werden die Ziffern genommen und zusammen mit $anderes_zeichen wird ein neuer String erstellt. Falls mehrere Funstellen im String sind, werden alle ersetzt.

Ich hoffen, das war verständlich! :-)

MfG, Arne P.

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4