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

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

DDD
發布: 2024-11-27 11:59:13
原創
657 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板