PHP: schnellste Möglichkeit, nach ungültigen Zeichen zu suchen (alle außer a-z, A-Z, 0-9, #, -,., $)?

9

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%     
Tom 14.11.2009, 23:29
quelle

6 Antworten

33

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.

    
Gumbo 15.11.2009, 00:08
quelle
10

Nur erlaubte Zeichen a-z Groß- oder Kleinschreibung ..

%Vor%

Hinzufügen von Zahlen ..

%Vor%

Zusätzliche Zeichen hinzufügen (in diesem Fall das Ausrufezeichen) ..

(Zusätzliche Zeichen müssen mit einem "\" wie gezeigt vorangestellt werden.)

%Vor%     
Richard 20.12.2011 07:54
quelle
3

Die Funktionsfamilie preg ist ziemlich viel schneller als ereg . Um nach ungültigen Zeichen zu suchen, versuche etwas wie:

%Vor%     
Richard Simões 14.11.2009 23:35
quelle
2

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.

    
Alan Storm 14.11.2009 23:36
quelle
1

Verwenden Sie preg stattdessen, es ist schneller, und ereg wurde eingestellt.

    
Galen 14.11.2009 23:34
quelle
1

preg_match ist sowohl schneller als auch leistungsfähiger als ereg:

%Vor%

oder drehen Sie es um:

%Vor%     
Douwe Maan 14.11.2009 23:34
quelle

Tags und Links