Regex für SetReceiveDataFilter

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

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

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.