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).
Zu den Kernfunktionen von PHP gehört StrChR () eine leichte Verarbeitungsfunktion, und ihre Leistung ist normalerweise überlegen, aber es gibt einige Verwendungsbeschränkungen.
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.
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.
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.
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
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
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";
}
Nach PHP 5.3 wird der Parameter vor dem Vorab -Needle unterstützt:
$str = "gitbox.net/contact";
$prefix = strchr($str, '/', true); // Ausgabe: gitbox.net
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).