如何使用陣列在字串中搜尋多個模式
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中文網其他相關文章!