Raqam to'g'rilovchi
(Caller Normalizer) Qo'ng'iroq qiluvchining raqamini regex yordamida o'zgartirish
Bu nima?
Raqam to'g'irlovchi (Caller Normalizer) — kiruvchi qo'ng'iroqlarda abonent raqamini berilgan qoida(regex)ga mos ravishda o'zgartirish.
Qisqacha: "Agar raqam berilgan formatda kelsa — uni boshqa formatga o'tkazadi, so'ng ko'rsatilgan modulga yo'naltiradi."
Bu nima uchun kerak?
Turli operatorlar va xorijiy tarmoqlardan raqamlar turli formatlarda kelishi mumkin:
0901234567→ standart format kerak:+998901234567998901234567→ qisqa format kerak:090123456780123456789→ xalqaro format kerak:+380123456789
Caller Normalizer barcha kiruvchi raqamlarni bir xil formatga keltirib, keyingi modullarda (operator, navbat, Smart Redirect va h.k.) to'g'ri ishlashini ta'minlaydi.
Ajratilgan raqamlar
6400–6599 diapazonidagi jami 200 ta raqam ajratilgan.
Maydonlar
0 bilan boshlangan raqamlar, Qisqa formatni to'ldirish / belgilari ichida yoziladi. Almashtirish'da guruh qiymatlarini olish uchun () ishlatiladi. $1, $2 — patternning guruhlariga ishora qiladi. Qanday ishlaydi?
- Kiruvchi raqam pattern'ga solishtіriladi.
- Mos kelsa —
$1,$2guruhlari almashtirishga qo'yiladi va yangi raqam hosil bo'ladi. - "Keyingi modul" ga yangi raqam bilan yo'naltiriladi.
- Mos kelmasa — raqam o'zgarishsiz qoladi va baribir "Keyingi modul" ga yo'naltiriladi.
Pattern mos kelmasa ham qo'ng'iroq to'xtatilmaydi — raqam asl holida saqlanib, "Keyingi modul" ishlaydi.
Nima uchun () guruh kerak?
Almashtirish'da raqamning bir qismini olish uchun pattern'da () bo'lishi shart.
Bir nechta guruh kerak bo'lsa:
Regex va almashtirish qoidalari
Pattern har doim / belgilari ichida yoziladi: /pattern/
| Belgi | Nima qiladi | Misol pattern | Misol almashtirish | Natija |
|---|---|---|---|---|
() | Guruh — almashtirish'da $1, $2 sifatida olinadi | /^0(\d+)$/ | +998$1 | 0901234 → +998901234 |
^ | Satr boshidan boshlanishi | /^998/ | — | 998... mos keladi |
$ | Satr oxiri bilan tugashi | /\d{9}$/ | — | 9 xonali raqam |
\d | Istalgan bitta raqam (0–9) | /\d{9}/ | — | 9 xonali raqam |
\d{n} | Aniq n ta raqam | /\d{12}/ | — | 12 xonali raqam |
\+ | Literal + belgisi | /^\+(\d+)$/ | $1 | +998901234 → 998901234 |
? | Oldingi belgi bo'lishi ham, bo'lmasligi ham mumkin | /^\+?(\d+)$/ | +$1 | 998... → +998... |
(a|b) | a yoki b | /^(0|00)(\d+)$/ | +998$2 | 0901... → +998901... |
Almashtirish belgilari
| Belgi | Nima | Misol |
|---|---|---|
$1 | Patternning 1-guruhi (...) | /^0(\d+)$/ → +998$1 |
$2 | Patternning 2-guruhi | /^(\d{3})(\d+)$/ → $1-$2 |
Misollar
| Nomi | Regex pattern | Almashtirish | Misol kirish | Natija |
|---|---|---|---|---|
| 9 xonali raqamlar → to'liq xalqaro format | /^(\d{9})$/ | +998$1 | 901234567 | +998901234567 |
0 prefiksli → xalqaro format | /^0(\d{9})$/ | +998$1 | 0901234567 | +998901234567 |
998 prefikssiz → to'liq format | /^(?!998)(\d{9})$/ | 998$1 | 901234567 | 998901234567 |
+ ni olib tashlash | /^\+(\d+)$/ | $1 | +998901234567 | 998901234567 |
+998 → qisqa 9 xonali formatga | /^\+998(\d{9})$/ | $1 | +998901234567 | 901234567 |
00 → + xalqaro | /^00(\d+)$/ | +$1 | 0049123456 | +49123456 |
Eslatmalar
- Bir tizimda 200 tagacha Caller Normalizer qoidasi yaratish mumkin.
- Raqam o'zgargandan so'ng keyingi modul yangi (normallashtirilgan) raqamni ko'radi.
- Pattern noto'g'ri yozilsa tizim validatsiya xatosi beradi va qoida saqlanmaydi.
- Bir nechta Caller Normalizer qoidasini zanjirlab ishlatish mumkin — birinchisi o'zgartiradi, ikkinchisi yana o'zgartiradi.
Patternlarni sinash
regex101.com — Regex patternlarini onlayn sinash uchun. PHP rejimini tanlang va "Substitution" bo'limida almashtirish natijasini ham sinab ko'ring.