在PHP 開發中,我們經常需要對數組中的元素進行過濾,特別是當我們想找出包含某些關鍵詞的字符串元素時。這個時候, stripos和array_filter的組合就是一個非常實用的解決方案。
本文將一步步帶你了解如何使用stripos搭配array_filter來實現這一功能。
stripos()是PHP 中的一個字符串函數,用於查找一個字符串在另一個字符串中首次出現的位置(不區分大小寫)。如果找到則返回位置(從0 開始),如果找不到則返回false 。
語法如下:
stripos(string $haystack, string $needle): int|false
例如:
stripos("Hello World", "world"); // 返回 6
array_filter()是PHP 中用於通過回調函數過濾數組的函數。它會遍歷數組中的每一個元素,把不符合回調函數返回值為true的元素過濾掉。
語法如下:
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
下面我們來看一個實用的例子:我們有一個包含多個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 實用技巧感興趣,歡迎關注更多編程小貼士!