首頁 >後端開發 >php教程 >如何在 PHP 中使用陣列有效率地搜尋字串中的多種模式?

如何在 PHP 中使用陣列有效率地搜尋字串中的多種模式?

Susan Sarandon
Susan Sarandon原創
2024-11-25 17:05:16466瀏覽

How to Efficiently Search a String for Multiple Patterns Using an Array in PHP?

如何使用陣列在字串中搜尋多個模式

strpos 函數是一個強大的工具,用於在字串中搜尋特定子字串細繩。但是,它一次只能搜尋一個模式。如果您需要檢查字串是否包含任何模式清單怎麼辦?

考慮以下範例:

$find_letters = ['a', 'c', 'd'];
$string = 'abcdefg';

如果我們嘗試使用以下命令在字串中搜尋字母數組strpos,它不會工作。這是因為 strpos 需要一個字串作為其第二個參數,而不是一個陣列。

使用strpos 建立一個用於陣列搜尋的函數

為了解決這個問題,我們可以建立一個自訂函數,它接受模式陣列和要搜尋的字元串。此函數將迭代數組,為每個模式呼叫strpos,並傳回找到的第一個匹配的位置:

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

此函數可以如下使用:

$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

結論

透過建立一個包裝strpos功能的自訂函數,我們現在可以有效地搜尋字串使用陣列的多個模式。此技術可用於多種場景,例如驗證使用者輸入或執行文字分析。

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

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