我正在尝试建立一个检查,通过正则表达式可靠地评估输入 ($f_username) 是否是 MAC 地址,因为它可能需要不同的语法。找到匹配项后。这应该在没有分隔符的情况下转换为小写。
该函数在匹配和转换大多数输入时工作正常,但会错误地匹配更长的输入......例如 11-22-33-44-55-66-77-88 将被转移到 11-22-33-44-55- 66 并且 $match 设置为 true...
这应该导致函数转到“其他分支”,因为它不是模式的完全匹配......但是它包含一个匹配......有人知道如何正确匹配这个吗?
感谢您抽出宝贵时间阅读本文,并提前感谢您的任何答案:)
function username_check($f_username) {
global $match;
if (preg_match_all("/([0-9a-fA-F]{2})[^0-9a-fA-F]?([0-9a-fA-F]{2})[^0-9a-fA-F]?([0-9a-fA-F]{2})[^0-9a-fA-F]?([0-9a-fA-F]{2})[^0-9a-fA-F]?([0-9a-fA-F]{2})[^0-9a-fA-F]?([0-9a-fA-F]{2})/", $f_username, $output, PREG_PATTERN_ORDER)) {
for ($i = 1; $i <= 6; $i++) {
$new_username .= strtolower($output[$i][0]);
}
$match = true;
$new_username = "'" . $new_username . "'"; //for later use in SQL-Query
} else {
$match = false;
}
return $new_username;
}