PHP регулярное выражение частично не работает при последней проверке - PullRequest
0 голосов
/ 16 июня 2020

Я хочу отфильтровать вводимые пользователем данные из формы, все переменные настроены правильно. Regex не работает только в последнем случае, когда я сравниваю дополнительные свойства продукта, размер, вес или размеры. И только параметр размера фильтруется правильно, другие просто игнорируются, потому что я могу добавить что угодно к весу и размерам, а регулярное выражение примет это. Например:

Test input:
Size: aaaa // Does not let through
Weight: aaaa // Lets through
Dimensions: aaaa // Lets through

В последнем if есть OR в коде, потому что только один параметр является обязательным для отправки.

Вот код, отвечающий за регулярное выражение:

if(!empty($UI->sku) && !empty($UI->name) && !empty($UI->price)) {
    if(!empty($UI->size) || !empty($UI->weight) || !empty($UI->dimensions)) {
        if(preg_match("/^\d+$/" , $UI->sku)) { // Checking if sku is int
            if(preg_match("/^[a-zA-Z0-9 ]+$/" , $UI->name)) { // Checking if name consists only of numbers and letters
                if(preg_match("/^(?=.)([+-]?([0-9]*)(\.([0-9]+))?)$/" , $UI->price)) { // Checking if price is float or int
                    if(preg_match("/^[0-9]*$/" , $UI->size) || preg_match("/^(?=.)([+-]?([0-9]*)(\.([0-9]+))?)$/" , $UI->weight) || preg_match("/^[0-9]+x[0-9]+x[0-9]+$/" , $UI->dimensions)) {
                        //Checking additional product parameters for valid format
                        $UI->addToDatabase();
                    } else {
                        echo "Check your product's additional property!";
                        exit;
                    }
                } else {
                    echo "Check your product's price!";
                    exit;
                }
            } else {
                echo "Check your product's name!";
                exit;
            }

        } else {
            echo "Check your product's SKU!";
            exit;
        }
    } else {
        echo "Please add additional parameter to your product!";
        exit;
    }
} else{
    echo "Please, include all the product's parameters!";
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...