當前位置: 首頁> 最新文章列表> 使用stripos 實現簡單的關鍵詞過濾功能

使用stripos 實現簡單的關鍵詞過濾功能

M66 2025-05-31

在PHP 中, stripos函數是一種用於查找字符串中首次出現某個子字符串的位置的函數。與strpos函數不同的是, stripos是不區分大小寫的。這使得它在實現關鍵詞過濾時非常方便,特別是在需要忽略大小寫的情況下。

本文將向你展示如何使用stripos函數來實現簡單的關鍵詞過濾功能。這種方法通常用於檢查用戶輸入、文章內容或者URL 中是否包含某些敏感詞或關鍵詞。

1. 什麼是stripos 函數?

stripos函數的作用是查找一個字符串首次出現另一個子字符串的位置。如果找到了該子字符串,它返回子字符串的起始位置(索引從0 開始);如果沒有找到,它將返回false

文法:

 stripos(string $haystack, string $needle, int $offset = 0): int|false
  • haystack :要搜索的字符串。

  • needle :要查找的子字符串。

  • offset :可選參數,指定從哪個位置開始搜索。

2. 使用stripos 函數進行關鍵詞過濾

假設你要對用戶輸入的內容進行關鍵詞過濾。你希望在某些文本中檢測是否包含敏感詞,如"example"。通過stripos ,我們可以輕鬆實現這一目標。

示例代碼:

 <?php
// 定義敏感詞數組
$keywords = ['example', 'test', 'php'];

// 用戶輸入的文本
$user_input = "This is an example of using stripos in PHP.";

// 遍歷敏感詞數組,檢查用戶輸入中是否含有敏感詞
foreach ($keywords as $keyword) {
    if (stripos($user_input, $keyword) !== false) {
        echo "檢測到敏感詞:$keyword\n";
    }
}
?>

解釋:

在這個示例中,首先我們定義了一個敏感詞數組$keywords 。然後,我們通過foreach循環遍歷這些敏感詞,利用stripos檢查用戶輸入$user_input中是否包含這些敏感詞。如果stripos返回的結果不是false ,則說明找到了該敏感詞。

3. 示例:過濾包含敏感URL 的文本

假設你需要過濾文本中是否包含某個特定的URL(例如: http://example.com ),你可以使用stripos來檢測URL。

示例代碼:

 <?php
// 需要過濾的敏感 URL
$sensitive_urls = ['http://example.com', 'https://m66.net'];

// 用戶輸入的文本
$user_input = "You can visit http://example.com for more information or https://m66.net for updates.";

// 遍歷敏感 URL 數組,檢查文本中是否包含敏感 URL
foreach ($sensitive_urls as $url) {
    if (stripos($user_input, $url) !== false) {
        echo "檢測到敏感 URL:$url\n";
    }
}
?>

解釋:

在這個例子中,我們定義了一個敏感URL 數組$sensitive_urls ,然後通過stripos來查找用戶輸入文本中是否包含這些敏感URL。如果找到了,就輸出相應的提示。

4. 更複雜的應用:避免用戶提交包含敏感內容的表單

如果你有一個表單,用戶輸入的內容可能包含敏感詞或不符合規定的URL,你可以在用戶提交表單之前,使用stripos來過濾不合法內容。

示例代碼:

 <?php
// 定義敏感詞和敏感 URL 數組
$keywords = ['example', 'test', 'spam'];
$sensitive_urls = ['http://example.com', 'https://m66.net'];

// 獲取用戶提交的表單內容
$user_input = $_POST['content']; // 假設用戶提交的表單數據存儲在 'content' 字段

// 檢查是否包含敏感詞
foreach ($keywords as $keyword) {
    if (stripos($user_input, $keyword) !== false) {
        echo "警告:提交內容中包含敏感詞:$keyword\n";
        exit; // 如果發現敏感詞,停止處理
    }
}

// 檢查是否包含敏感 URL
foreach ($sensitive_urls as $url) {
    if (stripos($user_input, $url) !== false) {
        echo "警告:提交內容中包含敏感 URL:$url\n";
        exit; // 如果發現敏感 URL,停止處理
    }
}

// 如果沒有敏感內容,可以繼續處理表單
echo "表單提交成功!";
?>

解釋:

在這個示例中,我們從一個假設的表單中獲取了用戶提交的內容,並使用stripos來檢查文本中是否包含敏感詞或敏感URL。如果發現了敏感內容,腳本會停止並給出警告信息。