Ich muss so schnell wie möglich die Puffereingabe zu einem PHP-Socket-Server überprüfen. Um dies zu tun, muss ich wissen, ob die Eingangsnachricht $ buffer andere Zeichen als die folgenden enthält: a-z, A-Z, 0-9, #, -,. und $
Ich verwende derzeit die folgende ereg-Funktion, frage mich jedoch, ob es Möglichkeiten gibt, die Geschwindigkeit zu optimieren. Sollte ich vielleicht eine andere Funktion oder eine andere Regex verwenden?
%Vor%Probieren Sie diese Funktion aus:
%Vor% [^A-Za-z0-9.#\-$]
beschreibt jedes Zeichen, das ungültig ist. Wenn preg_match
eine Übereinstimmung findet (ein ungültiges Zeichen), wird andernfalls 1 und 0 zurückgegeben. Außerdem ist !1
falsch und !0
ist true . Daher gibt isValid
false zurück, wenn ein ungültiges Zeichen gefunden wird und true andernfalls.
Die Funktionsfamilie preg
ist ziemlich viel schneller als ereg
. Um nach ungültigen Zeichen zu suchen, versuche etwas wie:
Sie sollten zur Verwendung von preg
anstelle von ereg
wechseln. Die ereg
-Familie von Funktionen wurde abgeschrieben und (seit php 5.3) wird sie eine PHP-Warnung auslösen, und sie werden bald aus der Sprache entfernt. Es ist auch anekdotische Weisheit, dass die Preg-Funktionen im Allgemeinen schneller als ereg sind.
Was die Geschwindigkeit anbetrifft, wäre es auf der Grundlage meiner Erfahrungen und der Codebasen, die ich in meiner Karriere gesehen habe, noch zu früh, diese Art von Saitenleistung zu optimieren. Umbrechen Sie den Vergleich in eine logische Funktion oder Methode
%Vor%Wenn Sie feststellen, dass dies ein Leistungsproblem ist, können Sie alle erforderlichen Optimierungen an einer Stelle anwenden.
preg_match ist sowohl schneller als auch leistungsfähiger als ereg:
%Vor%oder drehen Sie es um:
%Vor%Tags und Links php regex validation