使用陣列透過 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中文網其他相關文章!