我有这段代码,想将字符限制为 [a-f][A-F][0-9]
$code = mysql_real_escape_string($_POST['dgt']);
$len = strlen($code);
if (!($len == "32" or $len == "40")) {
print "This is not a valid code.";
} else {
echo 'success';
}
现在它有一个 LENGTH 字符限制,并且想添加如上所述的字符限制。
实现此目标的最佳方法是什么?
最佳答案
甚至可以在单个正则表达式中完成字符和长度断言:
if (preg_match('/^([[:xdigit:]]{8}){4,5}$/i')) {
// valid
}
这将匹配 4*8 (=32) 或 5*8 (=40) 个十六进制数字。
顺便说一句,你应该申请 mysql_real_escape_string
最后,或就在将其插入 SQL 字符串之前。这在这里没什么区别,特别是当值已经断言时。但是在对字符串进行 SQL 转义之后修改字符串可能在某些情况下会撤消转义。
您可能希望阅读 parameterized queries反正。那会使该注释变得多余。
关于php - $_POST 中的字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20822479/