Минимальное количество телефонных номеров Woocommerce Checkout - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу, чтобы пользователь ввел минимум 7 номеров для своего номера телефона в кассе Woocommerce.Приведенная ниже функция работает, но она включает пробелы, поэтому, если пользователь вводит 6 цифр с 1 пробелом, он считается равным 7. Как я могу изменить функцию так, чтобы она считала только цифры, а не пробелы, так что пользователь должен ввести минимум 7 цифр.

// validation for Billing Phone checkout field
add_action('woocommerce_checkout_process', 'custom_validate_billing_phone');
function custom_validate_billing_phone() {
    $is_correct = preg_match('/^[0-9 \-]{7}/i', $_POST['billing_phone']);
    if ( $_POST['billing_phone'] && !$is_correct) {
        wc_add_notice( __( 'Phone Number must be <strong>minimum 7 numbers</strong>.' ), 'error' );
    }
}

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Я разобрался с решением.

$is_correct = preg_match('/^[0-9\D]{7}/i', $_POST['billing_phone']);
0 голосов
/ 23 ноября 2018

Вы можете использовать следующее регулярное выражение.Он только считает цифры:

^(?:\D*?\d\D*?){7}$

Он начинается с начала строки, затем создает группу без захвата, которая соответствует необязательному любому числу нецифровых, цифр и необязательному любому числу нецифровых.Для этого потребуется ровно 7.

Это означает, что он только подсчитывает цифры и игнорирует нецифровые числа в Count.

Примеры соответствия:

1234567
1 23 45 67
123-4567

Примернесоответствия:

123 456
12-34-56-78
0 голосов
/ 23 ноября 2018

$ is_correct = preg_match ('/ ^ [0-9 -] {7} / i', $ _POST ['billing_phone']);

должно работать

...