Fonzo
12. Juli 2020 um 11:40
1
Kann mir jemand helfen, ich bekomme unter anderem über einen Multicast Socket
M-SEARCH * HTTP/1.1
Das möchte ich mit SetReceiveDataFilter in der darunter liegenden Instanz filtern das nur Dinge verarbeitet werden wenn ein
M-SEARCH * HTTP/1.1
empfangen wurde.
Kann mir jemand sagen wie die Regex dafür aussehen muss?
Ich hab es mit
$this->SetReceiveDataFilter('.*M-SEARCH * HTTP/1.1.*');
probiert, scheint aber falsch zu sein.
Dein gesuchter String enthält Zeichen welche für regex maskiert werden müssen.
Also zuerst preg_quote auf deinen gesuchten String und dann die Filterregel mit .* bauen.
PHP: preg_quote - Manual
Michael
Fonzo
12. Juli 2020 um 12:57
3
Vielen Dank. Wäre dann
$search = "M-SEARCH * HTTP/1.1";
$pattern = preg_quote($search, '/');
var_dump($pattern);
der Filter mit
$this->SetReceiveDataFilter('.*M\-SEARCH \* HTTP\/1\.1.*');
so richtig?
Und warum machst du das manuell, anstatt das im Code hintereinander zu schreiben :eek:
Michael
Fonzo
12. Juli 2020 um 13:50
5
Im Code ist es ja nur am Schluss die neue korrigierte Zeile mit
$this->SetReceiveDataFilter('.*M\-SEARCH \* HTTP\/1\.1.*');
und wollte nur schauen was dann genau umgewandelt wird, aber es scheint jetzt Dank Deiner Hilfe wieder zu funktionieren, nochmals danke.