129 Stimmen

Wie lässt sich am effizientesten prüfen, ob ein PHP-String mit einem anderen String endet?

Der PHP-Standardweg, um zu testen, ob ein String $str endet mit einer Teilzeichenkette $test ist:

$endsWith = substr( $str, -strlen( $test ) ) == $test

Ist dies der schnellste Weg?

0 Stimmen

0 Stimmen

PHP 8.0 führt eine neue Methode für diese Aufgabe ein str_end_with : stackoverflow.com/a/64160081/7082164

3 Stimmen

0voto

tkotitan Punkte 2993

Ich denke, die umgekehrten Funktionen wie strrchr() würden Ihnen helfen, das Ende der Zeichenkette am schnellsten zu finden.

0voto

Xesau Punkte 161

Dies ist reines PHP, ohne Aufruf externer Funktionen, mit Ausnahme von strlen .

function endsWith ($ends, $string)
{
    $strLength = strlen ($string);
    $endsLength = strlen ($ends);
    for ($i = 0; $i < $endsLength; $i++)
    {
        if ($string [$strLength - $i - 1] !== $ends [$i])
            return false;
    }
    return true;
}

-1voto

kabantejay Punkte 334

Für Ein-Zeichen-Nadel:

if (@strrev($haystack)[0] == $needle) {
   // yes, it ends...
}

1 Stimmen

Können Sie Ihre Antwort noch weiter erläutern, damit andere daraus lernen können? Warum verwenden strrev anstelle von substr($haystack, -1) ? Vor allem bei langen Schnüren kann es einige Zeit dauern, sie umzukehren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X