Telefonummern mit Perl trennen und in vcards schreiben!
Hallo Forum,
habe eine Spezielles PRoblem muss mit Hilfe von Perl Telefunummern trennen!
bsp. 0049 30 5845212 - 12
hier muss ich die 0049 in +49 bzw. eine Länderkennung "D" umwandeln
die 030 muss als Ortsvorwahl gelten und die 12 als Durchwahl. Diese muss dann in eine VCard geschrieben werden Script is schon fertig die dann importiert werden muss!
vielen Dank
mfg
habe eine Spezielles PRoblem muss mit Hilfe von Perl Telefunummern trennen!
bsp. 0049 30 5845212 - 12
hier muss ich die 0049 in +49 bzw. eine Länderkennung "D" umwandeln
die 030 muss als Ortsvorwahl gelten und die 12 als Durchwahl. Diese muss dann in eine VCard geschrieben werden Script is schon fertig die dann importiert werden muss!
vielen Dank
mfg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 39602
Url: https://administrator.de/forum/telefonummern-mit-perl-trennen-und-in-vcards-schreiben-39602.html
Ausgedruckt am: 23.12.2024 um 17:12 Uhr
5 Kommentare
Neuester Kommentar
hallo,
bei was genau benötigst du jetzt hilfe??
für visiten karten lesen und schreiben gibt es zb das modul Text::vCard oder Net::vCard.
mfg
bei was genau benötigst du jetzt hilfe??
für visiten karten lesen und schreiben gibt es zb das modul Text::vCard oder Net::vCard.
mfg
Moin transwarp,
bin in Perl nur Anfänger und Dir von daher kaum eine Hilfe.
Einen allgemeinen Algorithmus, also Pseudo-Code würde ich zwar formuliert bekommen (schätze ich), aber dann möchte ich vorher um Ergänzung bitten:
Wie definierst Du für Dich eine "gültige Telefonnummer" in den vorhandenen Daten?
a) Konkret:
- Ist 112 eine gültige Telefonnummer?
- Falls ja: wie sieht die in dieser Ziel-Format-Struktur aus?
b) Dürfen in den Jetzt-Daten denn auch schon Tel-Nummern wie "+CH-0888-123456" gültig sein?
c) wieso überhaupt wieder dieser Zeichen/Ziffern-Mix mit dem Ländercode "D" oder "A"?
Ich dachte, das Format der FQTN wäre nun endlich mal von allen abgenickt?
Als erstes jedenfalls müsste IMHO eine RegExp-Prüfung erfolgen auf Gültigkeit.
Und wenn sich die RegExpressions nicht sehr verändert haben in den letzten Wochen, müsste es in Perl ungefähr so losgehen:
Wie gesagt, da müssten mal die Perl-Zauberer ran. wenn es denn soweit ist.
Ich finde nur die Aufgabenstellung bisher noch unvollständig.
Kannst Du denn mal den Drumherum-Schnipsel posten, der schon da ist?
Dir fehlt doch nur noch diese Telefonnummern-Formatierung/Konvertierung, oder?
Gruß
Biber
bin in Perl nur Anfänger und Dir von daher kaum eine Hilfe.
Einen allgemeinen Algorithmus, also Pseudo-Code würde ich zwar formuliert bekommen (schätze ich), aber dann möchte ich vorher um Ergänzung bitten:
Wie definierst Du für Dich eine "gültige Telefonnummer" in den vorhandenen Daten?
a) Konkret:
- Ist 112 eine gültige Telefonnummer?
- Falls ja: wie sieht die in dieser Ziel-Format-Struktur aus?
b) Dürfen in den Jetzt-Daten denn auch schon Tel-Nummern wie "+CH-0888-123456" gültig sein?
c) wieso überhaupt wieder dieser Zeichen/Ziffern-Mix mit dem Ländercode "D" oder "A"?
Ich dachte, das Format der FQTN wäre nun endlich mal von allen abgenickt?
Als erstes jedenfalls müsste IMHO eine RegExp-Prüfung erfolgen auf Gültigkeit.
Und wenn sich die RegExpressions nicht sehr verändert haben in den letzten Wochen, müsste es in Perl ungefähr so losgehen:
....
function isTelNr($telnr) {
$number = str_replace(' ', '', $telnr);
$fqtnpattern = "/^((\+|0\d)\d{2})?(\((\d{2,5})\)|(\d{2,5})(\/|\-)?)(\d{3,9})(\-?(\d{1,3}))?$/";
if(preg_match($fqtnpattern, $telnr, $match)) {
# hier im OK-Fall kann es dann losgehen
# mit Ersetze "0049" am Anfang durch "D-"....etc
# oder erst ein preg_replace("/[^\d\+]/", "", $telnr); ?
return true;
} else {
return false;
}
Wie gesagt, da müssten mal die Perl-Zauberer ran. wenn es denn soweit ist.
Ich finde nur die Aufgabenstellung bisher noch unvollständig.
Kannst Du denn mal den Drumherum-Schnipsel posten, der schon da ist?
Dir fehlt doch nur noch diese Telefonnummern-Formatierung/Konvertierung, oder?
Gruß
Biber
ach der gute herr biber
hier is der perl zauberer :D
so wennsch risch verstanden hab: einlesen, ändern, ausgeben, oder??
mfg
hier is der perl zauberer :D
so wennsch risch verstanden hab: einlesen, ändern, ausgeben, oder??
#!c:{{comment_single_line_double_slash:0}}
use strict;
## tel. nr. einlesen
open(TEL,"<tel.txt") or die "Kann Telefonliste nicht öffnen: $!";
my @nummern = <TEL>;
close(TEL);
chomp(@nummern);
foreach(@nummern) {
## zeilen leer setzten wenn kommentar oder nur buchstaben
$_ = "\n" if $_ =~ m/^#/ig || $_ =~ m/[a-zA-Z]+/;
next if $_ =~ m/^\s$/;
## llerzeichen aus nummern entfernen
$_ =~ s/ //gi;
## auf alles trigger und ändern was 0049... is
if($_ =~ m/^({2})([49][\d-]*)/gi) {
$_ = "+".$2;
## auf alles triggern und ändern was 0[1-9]... is
} elsif($_ =~ m/^({1})([1-9]{1})([\d-]*)/gi) {
$_ = "+49".$2.$3;
}
}
chomp(@nummern);
## nummer in neues file schreiben
open(TELNEU,">tel_neu.txt");
print TELNEU join("\n", @nummern);
close(TELNEU);
exit(0);
mfg