preg_match()$ pattern格式问题

时间:2014-09-02 14:31:21

标签: php

我正在查看preg_match指令,但努力聚集我需要的东西,只允许使用某些字符,以及如何将其实现为模式格式

                        if(preg_match('[0-9.$M]', $_POST['budget']) === true) {
                            $errors = 'no illegal';
                        } else {
                            //Illegal character in budget
                            $errors = 'illegal';
                        }

但是我已经意识到,对于一个对这种组合没有用的人 0123456789$M.以及即使我让它工作也不会像我想要的那样发挥作用。因为我需要检查$ _POST ['预算']并确保它的格式正确,然后继续使用它。它只能包含我提出的角色,其他任何东西都会造成很大的混乱。

到目前为止,我已经通过javascript更改了任何条目,但是如果它被禁用,那么他们可以随意放入。

所以我需要的是伪

if (preg_match($allowed_characters, $_POST['budget'] === true && DOESNT CONTAIN ANY OTHER CHARACTERS) {
    //No illegal characters
} else {
    //Illegal characters!!
}

1 个答案:

答案 0 :(得分:2)

1)preg_match返回INT或BOOL false。

2)您的模式对preg_match无效

应该是这样的:

if(preg_match('/[^0-9\.\$M]+/', '0123456789$M.')) {
    $errors = 'illegal';
} else {                        
    $errors = 'no illegal';
}