字串匹配是程式開發中常見的需求,本文將介紹 PHP 中最基礎的字串匹配演算法——暴力匹配法(Brute Force),並提供完整的程式碼範例供參考。
暴力匹配法的核心思想是:從主字串的第一個字元開始,依序與模式字串的每個字元進行比對。若發現不匹配,則主字串指標後移一位,模式字串指標歸零,重新開始比對。直到模式字串完全匹配,或主字串遍歷結束。
以主字串 ababcabc 和模式字串 abc 為例,匹配過程如下:
aba vs abc → 不匹配bab vs abc → 不匹配abc vs abc → 匹配成功bca vs abc → 不匹配cab vs abc → 不匹配abc vs abc → 匹配成功<?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;
}
}
}
?>
此演算法時間複雜度為 O(n×m),其中 n 為主字串長度,m 為模式字串長度。雖然不是最高效的演算法(如 KMP、Boyer-Moore),但邏輯直觀、實作簡單,適合短字串或教學用途。實際專案中若處理大量文字,建議使用 PHP 內建的 strpos()、strstr() 或正則表達式函數。
希望本文對您的 PHP 程式設計有所幫助。