我有此代码,并希望将字符限制为a-f0-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';
}现在,它有一个字符长度限制,并希望添加字符限制,如前所述。
实现这一目标的最佳途径是什么?
发布于 2013-12-29 05:36:37
你为什么不利用一个简单的正则表达式?
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.';
}发布于 2013-12-29 05:53:11
甚至可以在一个正则表达式中完成字符和长度断言:
if (preg_match('/^([[:xdigit:]]{8}){4,5}$/i')) {
// valid
}这将匹配4*8 (=32)或5*8 (=40)六位数。
顺便说一句,您应该最后一次应用mysql_real_escape_string,或者就在将它插入到SQL字符串之前。这在这里几乎没有什么区别,特别是因为已经断言了这些值。但在某些情况下,在SQL-转义后修改字符串可能会取消转义。无论如何,您可能希望阅读parameterized queries。这会使那张纸条变得多余。
发布于 2013-12-29 05:37:24
$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';
}https://stackoverflow.com/questions/20822479
复制相似问题