Heim  >  Artikel  >  Backend-Entwicklung  >  Ist strposa eine effizientere Alternative zu strpos für die Suche nach mehreren Zeichenfolgen in PHP?

Ist strposa eine effizientere Alternative zu strpos für die Suche nach mehreren Zeichenfolgen in PHP?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-25 17:33:15111Durchsuche

Is strposa a More Efficient Alternative to strpos for Multiple String Searches in PHP?

Utilitaristische Strpos- und Array-basierte Nadelsuche

Bei der Suche nach mehreren Zeichenfolgen innerhalb einer Zeichenfolge funktioniert die integrierte PHP-Funktion strpos möglicherweise nicht genügen. Um dieses Problem zu beheben, schlägt ein Snippet von php.net eine benutzerdefinierte Funktion, strposa, vor, die effizient das erste Vorkommen einer beliebigen Zeichenfolge aus einem bestimmten Array innerhalb einer angegebenen Zeichenfolge findet.

Implementierung von strposa

function strposa(string $haystack, array $needles, int $offset = 0): bool 
{
    foreach($needles as $needle) {
        if(strpos($haystack, $needle, $offset) !== false) {
            return true; // stop on first true result
        }
    }

    return false;
}

Anwendungsbeispiel

Bedenken Sie das string:

$string  = 'Whis string contains word "cheese" and "tea".';

Und ein Array von Strings:

$array  = ['burger', 'melon', 'cheese', 'milk'];

Mit strposa:

if (strposa($string, $array, 1)) {
    echo 'true';
} else {
    echo 'false';
}

Dies gibt true aus, da der String eine Nadel aus dem enthält Array, nämlich „Käse“.

Verbessert strposa

Eine aktualisierte Version von strposa optimiert die Leistung, indem die Suche bei der ersten Nadelübereinstimmung beendet wird. Dies erhöht die Effizienz bei der Suche nach mehreren Nadeln im Heuhaufen.

Das obige ist der detaillierte Inhalt vonIst strposa eine effizientere Alternative zu strpos für die Suche nach mehreren Zeichenfolgen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn