Hallo zusammen,
ich frage mittels notify einen ical-Kalender ab:(Kalender_Wiederkehrend:modeStarted.*googlecom.*|Kalender_Wiederkehrend:modeEnded.*googlecom.*) {
my $name="AktionKalenderWiederkehrend";
my $text=fhem("get $NAME summary $EVTPART1");
my $loglevel=3;
my $DevName="Kalender_Wiederkehrend_".$text;
$DevName =~ s/\s+//g;
Log3 $name, 4, $name . ": text='$text', NAME='$NAME', EVENT='$EVENT', EVTPART0='$EVTPART0', EVTPART1='$EVTPART1', DevName='$DevName'";
if ( $EVTPART0 eq "modeStarted:" ) {
fhem("define $DevName dummy;set $DevName <h1 class='KalenderWiederkehrend'>$text</h1>;attr $DevName fp_Tablet -10,50,0,");
} elsif ( $EVTPART0 eq "modeEnded:" ) {
fhem("delete $DevName");
}
}
Wird ein Ereignis gefunden, erscheint es auf dem Tablet (Floorplan). Der Name der Definition ist abhängig vom Betreff im Kalender.
Die erste Hürde (Leerstellen im Betreff) nehme ich hiermit:$DevName =~ s/\s+//g;
Nun brach mir ein Umlaut das Genick.
Muss ich dafür noch mehr filtern oder gibt es eine Funktion die das alles auf einmal übernimmt?
Danke schonmal
Christian...
einfach alles was nicht erlaubt entfernen. nicht nur die leerzeichen. z.b. so:$DevName =~ s/[^\w.]//g;
wenn dir der . nicht wichtig ist reicht auch das:$DevName =~ s/\W//g;
falls deine perl version aus irgendeinem grund die umlaute zu den word zeichen zählt musst du es halt genauer vorgeben:$DevName =~ s/[^a-zA-Z0-9_.:]//g;
gruss
andre
Zitat von: justme1968 am 28 Oktober 2014, 18:22:04$DevName =~ s/[^\w.]//g;
Das habe ich übernommen und ein erster Test mit "ä" und " " (Leerstelle) war erfolgreich :)
Danke...