Aktueller Standort: Startseite> Neueste Artikel> Leistungsanalyse der STCHR -Funktion in PHP: In welchen Szenarien gelten sie?

Leistungsanalyse der STCHR -Funktion in PHP: In welchen Szenarien gelten sie?

gitbox 2025-06-04

1. Einführung in die Funktion von strChr ()

strChr () ist eine String -Funktion in PHP. Seine Funktion besteht darin, den Ort zu finden, an dem ein Zeichen zum ersten Mal in einer Zeichenfolge erscheint und alles vom Anfang dieses Zeichens bis zum Ende der Zeichenfolge zurückgibt. Sein Alias ​​ist strstr () und beide sind in der Funktion fast gleich.

Funktionsprototyp:

 string strchr(string $haystack, mixed $needle, bool $before_needle = false)
  • $ haystack : Der ursprüngliche String, nach dem man suchen muss.

  • $ nadel : Das zu durchsuchende Zeichen (kann nur ein einzelnes Zeichen sein, wenn es sich um eine Zeichenfolge handelt, nur das erste Zeichen wird genommen).

  • $ vor_needle (optional): Ob Sie alles vor der Nadel zurückgeben (Standard ist falsch).

2. Leistungsanalyse

Zu den Kernfunktionen von PHP gehört StrChR () eine leichte Verarbeitungsfunktion, und ihre Leistung ist normalerweise überlegen, aber es gibt einige Verwendungsbeschränkungen.

1. Zeitkomplexität

Der Kernmechanismus von strChr () besteht darin, die Zeichenfolge von links nach rechts zu scannen, um das erste passende Zeichen mit einer zeitlichen Komplexität von O (n) zu finden, wobei n die Länge der Zeichenfolge ist. Seine Leistung ist für die meisten kurzen Saiten oder mittelgroßen Zeichenfolgen akzeptabel.

2. mit substr () + strpos () vergleichen

In vielen Szenarien kann Substr () mit Strpos () verwendet werden, um ähnliche Effekte zu erzielen. Zum Beispiel:

 $url = "https://www.gitbox.net/page";
$fragment = substr($url, strpos($url, '/page'));

Äquivalent zu:

 $fragment = strchr($url, '/p');

Aus Perspektive der Leistung:

  • strChr () ist prägnanter, kann aber nur von der Charakterebene ausgewiesen.

  • substr () + strPos () ist flexibler und kann String -Substrings verarbeiten, aber etwas komplizierter.

3. Vergleich des Leistungstests (schematisch)

Das Folgende ist ein einfacher Vergleichstest, bei dem es 100.000 Mal dauert, um ein Zeichen in derselben Zeichenfolge zu finden:

 $start = microtime(true);
for ($i = 0; $i < 100000; $i++) {
    strchr("https://www.gitbox.net/example", '/e');
}
$end = microtime(true);
echo "strchr zeitaufwendig: " . ($end - $start) . " Zweite";

Die tatsächlichen Messungen zeigen, dass die Leistung von BINCHR () bei kleinen und mittleren Zeichenfolgen besser ist als die Kombinationsmethode, aber der Unterschied ist nicht groß. Die Lesbarkeit und die Anpassungsfähigkeit der Szene sollten in tatsächlichen Entscheidungen berücksichtigt werden.

A. Anwendbare Szenarioanalyse

1. Extrahieren Sie URL -spezifischer Pfad

Wenn wir Pfadinformationen aus der vollständigen URL extrahieren, kann strChR () den ersten / Startpfad -Teil schnell extrahieren.

 $url = "https://www.gitbox.net/api/data";
$path = strchr($url, '/a'); // Ausgabe: /api/data

2. Bestimmen Sie den Domänennamen der E -Mail -Adresse

Sie können strChr () verwenden, um den Domänennamen Teil der E -Mail schnell zu erhalten:

 $email = "[email protected]";
$domain = strchr($email, '@'); // Ausgabe: @gitbox.net

Wenn Sie @ entfernen müssen, können Sie substr () verwenden:

 $domain = substr(strchr($email, '@'), 1); // Ausgabe: gitbox.net

3.. In Kombination mit dem Booleschen Kontext, um festzustellen, ob ein Charakter existiert

Wenn der Rückgabewert von strChr () im booleschen Kontext ein wahrer Wert ist, bedeutet dies, dass der Charakter existiert:

 if (strchr("gitbox.net/docs", '/d')) {
    echo "Der Weg der Existenz /d";
}

4. Substring -Präfix extrahieren (unter Verwendung des Parameters vor dem vor_needle)

Nach PHP 5.3 wird der Parameter vor dem Vorab -Needle unterstützt:

 $str = "gitbox.net/contact";
$prefix = strchr($str, '/', true); // Ausgabe: gitbox.net

4. Verwenden Sie Vorschläge und Vorsichtsmaßnahmen

  • Leistungsüberlegungen : Überlegen Sie sich, ob strChr () wirklich benötigt wird oder ob Strpos () verwendet wird, um die Position genauer zu steuern.

  • Lesbarkeit : strChr () drückt die Absicht klar aus, die in einfachen Szenarien, in denen nur ein Zeichen erforderlich ist, sehr geeignet ist.

  • Multi-Charakter-Lookup-Beschränkungen : Nicht zum Auffinden von Substrings geeignet, nur für einzelne Zeichen-Lookups (obwohl der Nadelparameter Strings unterstützt, stimmt er tatsächlich nur mit dem ersten Zeichen überein).