MD5 雜湊值固定為 32 位十六進位字元 (0-9, a-f)。驗證一個字串是否符合 MD5 格式,只需一行正則即可完成。
function is_md5(string $str): bool {
return (bool)preg_match('/^[a-f0-9]{32}$/i', $str);
}
// 測試
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883e')); // true (123456)
var_dump(is_md5('E10ADC3949BA59ABBE56E057F20F883E')); // true (大寫)
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883')); // false (31 碼)
var_dump(is_md5('e10adc3949ba59abbe56e057f20f883g')); // false (含 g)
^:字串開頭。[a-f0-9]:十六進位字元 (不區分大小寫,因 i 修飾符)。{32}:精確 32 個字元。$:字串結尾。function is_hash(string $str, string $algo = 'md5'): bool {
$lengths = ['md5' => 32, 'sha1' => 40, 'sha256' => 64];
if (!isset($lengths[$algo])) return false;
return (bool)preg_match('/^[a-f0-9]{' . $lengths[$algo] . '}$/i', $str);
}
password_hash() (bcrypt/argon2)。i 修飾符同時匹配大小寫,資料庫儲存建議統一小寫。preg_match('/^[a-f0-9]{32}$/i', $str) 即可精準驗證 MD5 格式。記住:格式驗證 ≠ 安全性驗證,請勿將 MD5 用於密碼保護。