FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChristianKnorr am 28 Oktober 2014, 18:05:36

Titel: Umwandlung nicht erlaubter Zeichen in Definitionen
Beitrag von: ChristianKnorr am 28 Oktober 2014, 18:05:36
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...
Titel: Antw:Umwandlung nicht erlaubter Zeichen in Definitionen
Beitrag von: justme1968 am 28 Oktober 2014, 18:22:04
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
Titel: Antw:Umwandlung nicht erlaubter Zeichen in Definitionen
Beitrag von: ChristianKnorr am 28 Oktober 2014, 18:48:36
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...