當前位置: 首頁> 最新文章列表> 用stripos + array_filter 過濾含指定詞的數組元素

用stripos + array_filter 過濾含指定詞的數組元素

M66 2025-05-31

在PHP 開發中,我們經常需要對數組中的元素進行過濾,特別是當我們想找出包含某些關鍵詞的字符串元素時。這個時候, striposarray_filter的組合就是一個非常實用的解決方案。

本文將一步步帶你了解如何使用stripos搭配array_filter來實現這一功能。

什麼是stripos?

stripos()是PHP 中的一個字符串函數,用於查找一個字符串在另一個字符串中首次出現的位置(不區分大小寫)。如果找到則返回位置(從0 開始),如果找不到則返回false

語法如下:

 stripos(string $haystack, string $needle): int|false

例如:

 stripos("Hello World", "world"); // 返回 6

什麼是array_filter?

array_filter()是PHP 中用於通過回調函數過濾數組的函數。它會遍歷數組中的每一個元素,把不符合回調函數返回值為true的元素過濾掉。

語法如下:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

stripos + array_filter 的組合使用

下面我們來看一個實用的例子:我們有一個包含多個URL 的數組,我們想過濾出所有包含某個關鍵詞(比如“login”)的元素。

示例代碼:

 <?php

$urls = [
    "https://m66.net/home",
    "https://m66.net/user/login",
    "https://m66.net/about",
    "https://m66.net/admin/login",
    "https://m66.net/contact"
];

$keyword = "login";

$filtered = array_filter($urls, function($url) use ($keyword) {
    return stripos($url, $keyword) !== false;
});

print_r($filtered);

輸出結果:

 Array
(
    [1] => https://m66.net/user/login
    [3] => https://m66.net/admin/login
)

如你所見,只有包含"login" 的URL 被保留下來了。

靈活擴展:支持多個關鍵詞

如果你想支持多個關鍵詞,可以對回調函數稍作修改:

 <?php

$keywords = ["login", "admin"];
$filtered = array_filter($urls, function($url) use ($keywords) {
    foreach ($keywords as $word) {
        if (stripos($url, $word) !== false) {
            return true;
        }
    }
    return false;
});

print_r($filtered);

這將返回包含任一關鍵詞的URL,靈活且強大。

結語

使用stripos搭配array_filter是處理字符串數組中關鍵詞匹配的一個簡單高效的方式。它不僅代碼簡潔,邏輯清晰,而且適用於多種實際場景,比如日誌分析、URL 路由匹配、內容過濾等。

你可以根據自己的需求,將這個邏輯進一步封裝為一個函數,提高複用性和可維護性。

如果你對這類PHP 實用技巧感興趣,歡迎關注更多編程小貼士!