首頁 >後端開發 >php教程 >如何使用 PHP 有效率地搜尋字串中的多個子字串?

如何使用 PHP 有效率地搜尋字串中的多個子字串?

Susan Sarandon
Susan Sarandon原創
2024-12-15 03:15:10982瀏覽

How Can I Efficiently Search a String for Multiple Substrings Using PHP?

使用陣列透過 strpos 搜尋字串

strpos 函數通常用於定位字串中子字串的位置。然而,有時使用針數組同時搜尋多個子字串會很有用。

問題

不幸的是,strpos 的標準實作不允許我們這樣做通過一排針。嘗試這樣做,如提供的範例所示,將導致不令人滿意的結果。

解決方案

幸運的是,可以建立自訂函數來擴展功能strpos 並容納針陣列。以下程式碼片段受PHP 社群貢獻的啟發,提供了一個解決方案:

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;
}

用法

要使用此函數,您可以傳遞haystack 字串、針數組和可選偏移量作為參數。例如:

$string = 'This string contains word "cheese" and "tea".';
$array  = ['burger', 'melon', 'cheese', 'milk'];
var_dump(strposa($string, $array)); // will return true, since "cheese" has been found

這將搜尋字串以查找數組中是否存在任何針。如果找到任何針,則函數將傳回 true,停止進一步迭代。

以上是如何使用 PHP 有效率地搜尋字串中的多個子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn