[英]PHP exact match between input and regex pattern
我正在尝试建立一个检查,以通过Regex可靠地评估输入($ f_username)是否为MAC地址,因为它可能采用不同的语法。 找到匹配项后。 应当将其转换为小写字母而不带限定符。
该功能可以很好地匹配和转换大多数输入,但是会错误地匹配更长的输入...例如11-22-33-44-55-66-77-88将被传输到11-22-33-44-55- 66并且$ match设置为true ...
这应该导致函数转到“ else分支”,因为它不是该模式的精确匹配...但是它包含一个匹配项...有人知道如何正确匹配该模式吗?
感谢您抽出宝贵的时间阅读本文,并预先感谢您的任何回答:)
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.