strpos 與陣列:深入探究
在 PHP 中,strpos 函數在另一個字串中搜尋一個字串。通常,我們會遇到想要同時搜尋多個字串的情況。雖然提供的程式碼無法執行此任務,但我們可以使用一系列搜尋字詞探索替代解決方案。
陣列針的自訂函數
一種方法是建立一個自訂函數,模仿strpos 的針數組功能:
function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); }
這個函數接受一個haystack 字串,一個陣列要搜尋的針數以及可選的偏移量。它傳回任何針第一次出現的索引,如果沒有找到,則傳回 false。
改進的自訂功能
要增強此功能,我們可以停止找到第一根針後搜尋:
function strposa(string $haystack, array $needles, int $offset = 0): bool { foreach($needles as $needle) { if(strpos($haystack, $needle, $offset) !== false) { return true; } } return false; }
此更新的函數會掃描大海撈針以查找數組中的每根針並傳回true一旦找到匹配項。當乾草堆中可能存在多個針時,效率會更高。
使用範例
要使用這些函數,只需將乾草堆字串和針數組作為參數傳遞即可.
$string = 'This string contains word "cheese" and "tea".'; $array = ['burger', 'melon', 'cheese', 'milk']; if(strposa($string, $array)) { echo 'true'; // since "cheese" is found }
在此範例中,腳本輸出true,因為「cheese」是乾草堆。
以上是如何使用陣列在 PHP 中有效地搜尋字串中的多個子字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!