php - $_POST 中的字符限制

标签 php mysql regex post

我有这段代码,想将字符限制为 [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/

相关文章:

mysql - 强制sql排序到最后的字符

ios - 为什么我的模式在非用户换行符处停止?

php - 如何使我的 URL 像 index.php?page=Login

php - Apache 权限,PHP 文件创建,MKDir 失败

php - 你如何使 preg_replace 捕获大写 (php)?

java - hibernate 映射创建表

mysql - Mysql可以缓存对具有相同参数的相同函数的调用吗

python - Python 正则表达式是否支持类似 Perl's\G 的东西?

mysql - 带有 MySql 更新的正则表达式

php - PHP 函数中的多个 return 语句