首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 最簡單字串匹配演算法實作教學

     編輯:PHP 相關知識

PHP 最簡單字串匹配演算法實作教學

字串匹配是程式開發中常見的需求,本文將介紹 PHP 中最基礎的字串匹配演算法——暴力匹配法(Brute Force),並提供完整的程式碼範例供參考。

演算法原理

暴力匹配法的核心思想是:從主字串的第一個字元開始,依序與模式字串的每個字元進行比對。若發現不匹配,則主字串指標後移一位,模式字串指標歸零,重新開始比對。直到模式字串完全匹配,或主字串遍歷結束。

以主字串 ababcabc 和模式字串 abc 為例,匹配過程如下:

  • 位置 0:aba vs abc → 不匹配
  • 位置 1:bab vs abc → 不匹配
  • 位置 2:abc vs abc → 匹配成功
  • 位置 3:bca vs abc → 不匹配
  • 位置 4:cab vs abc → 不匹配
  • 位置 5:abc vs abc → 匹配成功

PHP 程式碼實作

<?php
$str = "ababcabc";
$search = "abc";

$strlen = strlen($str);
$searchlen = strlen($search);

// 遍歷主字串
for ($i = 0; $i < $strlen; $i++) {
    // 剩餘長度不足時提前結束
    if ($i + $searchlen > $strlen) {
        echo '超出長度';
        break;
    }

    $match = true;

    // 遍歷模式字串進行逐字元比對
    for ($j = 0; $j < $searchlen; $j++) {
        if ($str[$i + $j] != $search[$j]) {
            $match = false;
            break;
        }

        // 最後一個字元也匹配時,輸出結果
        if ($match && $j == $searchlen - 1) {
            echo "{$str} 第 {$i} 個位置開始為 {$search}\n";
            break;
        }
    }
}
?>

程式碼解析

  1. 外層迴圈:遍歷主字串每個可能的起始位置
  2. 長度檢查:若剩餘字元數少於模式字串長度,直接跳出
  3. 內層迴圈:逐字元比對模式字串
  4. 早期終止:一旦發現不匹配立即跳出內層迴圈,提升效率
  5. 成功判斷:當所有字元都匹配時,輸出匹配位置

效能考量

此演算法時間複雜度為 O(n×m),其中 n 為主字串長度,m 為模式字串長度。雖然不是最高效的演算法(如 KMP、Boyer-Moore),但邏輯直觀、實作簡單,適合短字串或教學用途。實際專案中若處理大量文字,建議使用 PHP 內建的 strpos()、strstr() 或正則表達式函數。

希望本文對您的 PHP 程式設計有所幫助。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved