Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Як створити регулярний вираз для номеру телефона Укр, модуль сімпл


Tyry

Recommended Posts

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

Знімок екрана 2023-11-15 о 18.03.44.png

Надіслати
Поділитися на інших сайтах


Сама маска ввода в симпле задается, но я лично ее меняю на другой вариант, мне не нравится то, что симпла использует для маски.

А проверка, в catalog/model/tool/simpleapimain.php

что-то вроде такого:

public function validateTelephone($telephone) {
	$telephone = preg_replace(array('/-/', '/Х/', '/\ /', '/\+/', '/\(/', '/\)/'), '', $telephone);

	if (utf8_strlen($telephone) == 12 && substr($telephone, 0, 3) == '380' && $telephone{3} != 0) {
		return true;
	}

	return false;
}

ну и в симпле указать эту функцию как проверку

  • +1 1
Надіслати
Поділитися на інших сайтах

В 15.11.2023 в 18:05, Tyry сказав:

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

Знімок екрана 2023-11-15 о 18.03.44.png

Як варіант можна використати таке регулярне вираження

1. Маску виставляємо  -  +389999999999

2. Регулярне вираження -  ^\+380[1-9]{1}\d{8}$

Міські номера пропускати не буде !

  • +1 2
Надіслати
Поділитися на інших сайтах


В 15.11.2023 в 18:05, Tyry сказав:

Підкажіть будь ласка хто як вирішував проблему з номером телефону , при звичайній настройці сімпла значення маски пропускає помилки типу +38(038)097-641-02-60
Потрібно щоб як в скріні +38(0**) там де ** неможна було ввести +,3,8,0,  і тд а тільки реально ціфри операторів типу 067 068 і тд,
хто як вирішував цю проблему?

 

Можна щось таке спробувати, хоча я не перевіряв

$pattern = '/^(?:\+?38)?\(0(?![0-9]{2}[0-8]|83)[0-9]{2}\d{7}\)$/';

if (preg_match($pattern, $telephone)) {
    echo 'Номер телефону ' . $telephone . ' вірний.';
} else {
    echo 'Введіть коректний номер телефону!';
}

при умові що маска буде починатись так +38(099) або 38(099)

 

Щоб ще й не враховувались міські номери - то буде складно. Можна в placeholder поля телефон вказати щось типу "Мобільний телефон"

 

Надіслати
Поділитися на інших сайтах

от бачив на маудау прикольно зробили тобто тільки укр оператори у виразі вказані типу 066 чи 093, а от інші цифри непропускає типу 081 чи 065 і тд, хто таке прописував хто знає як краще зробити внизу додаю скріни

Знімок екрана 2023-11-21 о 13.16.35.png

Знімок екрана 2023-11-21 о 13.16.18.png

Надіслати
Поділитися на інших сайтах


Я запитав у Чат джпт і створив спільно ось такий вираз зараз він суперово працює для маски +38(099)999-99-99
Плейсхолдер поставив такий +38(0

^\+\d{2}\((050|066|095|099|067|068|096|097|098|063|073|093|091|092|094)\)\d{3}-\d{2}-\d{2}$
Перевіряє по всіх операторах наших в Україні, стаціонарні мені і так непотрібно, якщо комусь не важко подивіться, ніби все ок) юзайте таке рішення)

Змінено користувачем Tyry
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.