首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$_POST中的字符限制

问$_POST中的字符限制
EN

Stack Overflow用户
提问于 2013-12-29 05:34:15
回答 3查看 85关注 0票数 0

我有此代码,并希望将字符限制为a-f0-9。

代码语言:javascript
复制
$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';
}

现在,它有一个字符长度限制,并希望添加字符限制,如前所述。

实现这一目标的最佳途径是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-29 05:36:37

你为什么不利用一个简单的正则表达式?

代码语言:javascript
复制
    if(preg_match('/[^a-f_\-0-9]/i', $code)) //if this regex doesn't work , make use of /[^a-fA-F0-9]/
    {
      if(strlen($code)==32 || strlen($code)==40)
      {
      echo "This is not a valid code.";
      }
    }
    else
    {
    echo 'Success.';
    }
票数 2
EN

Stack Overflow用户

发布于 2013-12-29 05:53:11

甚至可以在一个正则表达式中完成字符和长度断言:

代码语言:javascript
复制
if (preg_match('/^([[:xdigit:]]{8}){4,5}$/i')) {
    // valid
}

这将匹配4*8 (=32)或5*8 (=40)六位数。

顺便说一句,您应该最后一次应用mysql_real_escape_string,或者就在将它插入到SQL字符串之前。这在这里几乎没有什么区别,特别是因为已经断言了这些值。但在某些情况下,在SQL-转义后修改字符串可能会取消转义。无论如何,您可能希望阅读parameterized queries。这会使那张纸条变得多余。

票数 3
EN

Stack Overflow用户

发布于 2013-12-29 05:37:24

代码语言:javascript
复制
  $code = mysql_real_escape_string($_POST['dgt']);
  $len = strlen($code);  

  if (!($len == "32" or $len == "40") or preg_match('/[^a-fA-F0-9]+/i', $code)){
      print "This is not a valid code.";
  } else {
      echo 'success';
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20822479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档