Hi,
hab in einer datenbank telefonnummern und zwar in folgendem format:
+49-12345-1234-12323
oder
+49-12345-1234
Du hast also 3 oder 4 Zifferngruppen.
preg_match('/(\d+)-(\d+)-(\d+)/', $telefon, $match);
Der Ausdruck matcht 3 Zifferngruppen.
leider schneidet mir mein skript die letzten stellen (durchwahlen) ab.
Das wäre die 4. Zifferngruppe.
auch wenn ich als trennzeichen / oder | nehme, wird abgesachnitten.
Das Trennzeichen ändert nichts an der Anzahl der Zifferngruppen.
preg_match('/(\d+)/(\d+)/(\d+)/', $telefon, $match);
Auch dieser Ausdruck matcht exakt 3 Zifferngruppen.
$tland = $match[1];
$tvw = $match[2];
if ($match[4] != ""){$tnr = $match[3].'-'.$match[4];}
Auf die 4. Klammerung zuzugreifen zu versuchen ist sinnlos, da der Ausdruck ja nur 3 Klammern hat, also kann die 4. niemals existieren.
kann mir jemand helfen? ich verstehs nicht...
Du müßtest noch eine optionale 4. Zifferngruppe anhängen, also z.B.
/(\d+)-(\d+)-(\d+)(?:-(\d+))?/
(?:) ist dabei eine Gruppierung, die nicht gespeichert wird.
? steht für 0 oder 1mal.
Also ist (?:)? eine optionale Gruppe (kann 1mal vorhanden sein, muß aber nicht).
Der Inhalt von (?:) ist die bereits bekannte Anordnung Trennzeichen plus Zifferngruppe.
Aber Hopsel hat Recht, explode ist hier sinnvoller.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.