preg_match() - versteh ich nicht...
theresa
- php
hallo liebe leute!
hab in einer datenbank telefonnummern und zwar in folgendem format:
+49-12345-1234-12323
oder
+49-12345-1234
nun möchte ich zur weitere nverwertung die nummernblöcke aufsplitten.
dazu verwende ich folgendes:
preg_match('/(\d+)-(\d+)-(\d+)/', $telefon, $match);
$tland = $match[1];
$tvw = $match[2];
$tnr = $match[3];
leider schneidet mir mein skript die letzten stellen (durchwahlen) ab.
auch wenn ich als trennzeichen / oder | nehme, wird abgesachnitten.
hab auch schon folgendes - leider erfolglos - versucht:
preg_match('/(\d+)/(\d+)/(\d+)/', $telefon, $match);
$tland = $match[1];
$tvw = $match[2];
if ($match[4] != ""){$tnr = $match[3].'-'.$match[4];}
else {$tnr = $match[3];}
kann mir jemand helfen? ich verstehs nicht...
danke,
eure theresa!
Hi theresa!
kann mir jemand helfen? ich verstehs nicht...
Alles, was du brauchst, ist explode.
MfG H☼psel
Alles, was du brauchst, ist explode.
DANKEEEEEEEEEEE!!!!!
Funktioniert toll.
MfG H☼psel
gute nacht,
theresa
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