函式名稱:fnmatch()
適用版本:PHP 4, PHP 5, PHP 7
函式說明:fnmatch() 函式用於使用模式匹配來比較字串。它類似於 Unix shell 的檔名匹配規則。
語法:bool fnmatch(string $pattern, string $string[, int $flags = 0])
引數:
- $pattern:要匹配的模式,可以包含萬用字元字元 *(匹配任何字元序列)和 ?(匹配任何單個字元)。
- $string:要與模式進行比較的字串。
- $flags(可選):可以是以下常量的組合:
- FNM_NOESCAPE:禁用反斜槓轉義。
- FNM_PATHNAME:要求模式匹配整個路徑。
- FNM_PERIOD:在模式的開頭必須出現句點才能匹配。
返回值:如果 $string 匹配 $pattern,則返回 true,否則返回 false。
示例1:
$pattern = "*.txt"; // 匹配以 .txt 結尾的檔名
$string = "file.txt";
if (fnmatch($pattern, $string)) {
echo "匹配成功";
} else {
echo "匹配失敗";
}
輸出:
匹配成功
示例2:
$pattern = "image*.jpg"; // 匹配以 image 開頭,以 .jpg 結尾的檔名
$string = "image123.jpg";
if (fnmatch($pattern, $string)) {
echo "匹配成功";
} else {
echo "匹配失敗";
}
輸出:
匹配成功
注意事項:
- fnmatch() 函式區分大小寫,如果需要進行大小寫不敏感的匹配,可以使用 strcasecmp() 函式進行比較。
- $pattern 中的萬用字元字元 * 和 ? 可以出現在任何位置,也可以使用多個。例如,"*.txt" 匹配以 .txt 結尾的檔名,"file?.txt" 匹配類似 "file1.txt"、"fileA.txt" 的檔名。
- $flags 引數可以控制模式匹配的一些行為,例如是否需要整個路徑匹配、是否需要以句點開頭等。
- fnmatch() 函式在匹配過程中會自動處理反斜槓轉義,如果不需要轉義,可以使用 FNM_NOESCAPE 標誌禁用轉義。