更新别人的旧PHP项目,我对正则表达式不熟悉。
问题一是:这是做什么的?
preg_match('/^[0-9]+[.]?[0-9]*$/', $variable)
问题二是:这是否是一个安全的过滤器,用于插入没有mysql_real_escape_string()的mysql数据库?我知道答案是概率不,但只有当这个正则表达式没有通过时才设置为使用mysql_real_escape_string()。
感谢。
答案 0 :(得分:5)
^ // start of string
[0-9]+ // one or more numbers (could also be \d+)
[.]? // zero or one period (could also be \.?)
[0-9]* // zero or more numbers (could also be \d*)
$ //end of string
因此,它确保输入是一个数字,例如12
或3.6
(52.
也将匹配)。它不会与.35
或12a6
匹配。
DB插入似乎足够安全,因为它只允许数字。
答案 1 :(得分:1)
它匹配以下字符串:
答案 2 :(得分:1)
它不会清理数据库的字符串。
检查$variable
是否符合此模式......
^[0-9]+
).
([.]?
)[0-9]*
)$
)答案 3 :(得分:0)
它试图匹配一个十进制数字(尽管很差)。它无论如何都不会修改$variable
,所以在传递给MySQL之前你需要正确地转义它。
答案 4 :(得分:0)
这将匹配小数点前至少有一位数的数字(如果有小数点)。如果该值与此正则表达式匹配,我看不出将它插入数据库是否不安全。
答案 5 :(得分:0)
查看完全匹配。 它匹配 234234232432343.231313132321 和 2232233223 和 322332。 并不是 0.32232 而不是
答案 6 :(得分:0)
这是一个安全的过滤器,可以在没有mysql_real_escape_string()的情况下插入mysql数据库吗?
假设可能使用这个变量,我会说mysql_real_escape_string()对它来说是没用的。
虽然需要查询汇编代码。