Umwandlung nicht erlaubter Zeichen in Definitionen

Begonnen von ChristianKnorr, 28 Oktober 2014, 18:05:36

Vorheriges Thema - Nächstes Thema

ChristianKnorr

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...

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ChristianKnorr

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...