All guides
No guide matches your search.
الجوال والرمز البريدي ولوحة المركبة
تحقق من أرقام الجوال الإيرانية بكل صيغ الإدخال الشائعة، ومن الرموز البريدية ولوحات المركبات، مع تلميحات المشغّل والتحليل وحدود واضحة.
On this page
البدء السريع
<?php
require 'vendor/autoload.php';
use RtlyKit\Validation\Mobile;
use RtlyKit\Validation\PostalCode;
use RtlyKit\Validation\VehiclePlate;
use function RtlyKit\is_mobile;
use function RtlyKit\is_postal_code;
use function RtlyKit\is_vehicle_plate;
var_dump(is_mobile('+98 912 123 4567')); // bool(true)
var_dump(is_postal_code('۱۲۳۴۵-۶۷۸۹۰')); // bool(true)
var_dump(is_vehicle_plate('12ب345 ایران 67')); // bool(true)
echo Mobile::getOperator('09121234567'), "\n"; // همراه اولتطبّق الأدوات الثلاث جميعها عقد Validator المشترك. ودوالّها المساعدة هي validate_mobile() وvalidate_postal_code() وvalidate_vehicle_plate().
أرقام الجوال
الصيغ المقبولة
تُحوِّل Mobile كل شيء إلى الصيغة الوطنية 09xxxxxxxxx (11 رقمًا). وتقبل هذه الصيغ الخمس، بأرقام فارسية أو عربية، ومع مسافات أو شرطات أو أقواس مختلطة بها:
| المُدخَل | normalized |
|---|---|
09121234567 | 09121234567 |
9121234567 | 09121234567 |
989121234567 | 09121234567 |
+989121234567 | 09121234567 |
00989121234567 | 09121234567 |
۰۹۱۲ ۱۲۳ ۴۵۶۷ | 09121234567 |
(0912) 123-4567 | 09121234567 |
تُبقي Mobile على الأرقام فقط، فيُحذف أي فاصل غير رقمي. ويُقبل أيضًا عدد صحيح مثل 9121234567؛ فليس فيه صفر بادئ يمكن أن يضيع، ولذلك يُقرأ على أنه الصيغة ذات الأرقام العشرة.
القاعدة
الصلاحية فحص للشكل: بعد التنظيف يجب أن يكون الرقم 09 يليه رقم من 0 إلى 4 أو 9، ثم ثمانية أرقام أخرى. وهذه هي الكتل من 090x إلى 094x و099x. وأي شيء آخر، مثل 0950... أو رقم من 10 أرقام، يُرجع invalid_format.
$r = Mobile::validate('09121234567');
echo json_encode($r->details(), JSON_UNESCAPED_UNICODE);
// {"normalized":"09121234567","operator":"همراه اول","allocated":true}
print_r(Mobile::validate('09501234567')->errors()); // [invalid_format]
print_r(Mobile::validate('0912123456')->errors()); // [invalid_format]
echo Mobile::normalize('+98 912 123 4567'); // 09121234567تلميح المشغّل
تبحث details()['operator'] وMobile::getOperator() عن الرقم في جدول للبادئات المعروفة: همراه أول (0910-0919، 0990-0994)، وإيرانسل (0900-0905، 0930، 0933، 0935-0939)، ورايتل (0920-0923)، واسپادان (0931)، وتالية (0932)، وتلهكيش (0934)، وشاتل موبايل (09981 و09982)، وآپتل (09991). وتُعتمد أطول بادئة مطابِقة. وإذا كان الرقم صالحًا وبادئته غير موجودة في الجدول فإن المشغّل null:
echo Mobile::getOperator('09351234567'), "\n"; // ایرانسل
echo Mobile::getOperator('09981234567'), "\n"; // شاتل موبایل
echo Mobile::getOperator('09991012345'), "\n"; // آپتل
var_dump(Mobile::validate('09951234567')->isValid()); // bool(true)
var_dump(Mobile::getOperator('09951234567')); // NULL، صالح لكنه غير موجود في الجدول
var_dump(Mobile::getOperator('09501234567')); // NULL، رقم غير صالحتتيح خدمة نقل الرقم بين المشغّلين أن يحتفظ الناس بأرقامهم عند تغيير المشغّل. لذلك فالبادئة تلميح إلى المشغّل الأصلي، وليست وعدًا بالمشغّل الحالي. والكتل التي لا نملك لها مشغّلًا مؤكدًا (مثل 0940-0949 ومعظم 0995-0999) تُرجع null، مع أن الرقم يبقى صالحًا.
علامة التخصيص
لكل نتيجة صالحة أيضًا مفتاح allocated. قيمته true إذا وقعت البادئة في كتلة تدرجها خطة الترقيم الوطنية لخدمة الهاتف المحمول. وقد أودعت هيئة تنظيم الاتصالات هذه الخطة لدى الاتحاد الدولي للاتصالات (ITU) في 24 أغسطس 2026. وتُرجع Mobile::isAllocated() العلامة نفسها قيمةً bool، وتكون false لكل ما ليس رقمًا سليم الصياغة.
var_dump(Mobile::isAllocated('09121234567')); // bool(true)
var_dump(Mobile::isAllocated('09951234567')); // bool(false)، الشكل صالح لكن البادئة ليست في الخطة
var_dump(Mobile::isAllocated('09501234567')); // bool(false)، رقم غير صالح
var_dump(Mobile::validate('09951234567')->details()['allocated']); // bool(false)القيمة allocated = false في نتيجة صالحة لا تجعل الرقم غير صالح. فقد تكون البادئة أحدث من الخطة الموجودة في بياناتنا، أو واقعة في كتلة مثل 0906-0909 أو 094x لا تعدّها الخطة للهاتف المحمول. والصلاحية تبقى فحص الشكل.
التفاصيل: normalized وoperator وallocated. مفاتيح الأخطاء الوحيدة هي invalid_format وinvalid_type وinput_too_long. ولا تُقبل أرقام الهاتف الثابت ولا الأرقام الدولية.
من المفيد أن تعرف. تؤكد خطة الترقيم أن البادئة مخصصة للهاتف المحمول، لكنها لا تذكر المشغّلين. أسماء المشغّلين مأخوذة من جداول عامة متفقة فيما بينها، ومن صفحات المشغّلين أنفسهم لإيرانسل وآپتل وشاتل موبايل. لا توجّه الرسائل النصية ولا الفوترة بحسب تلميح المشغّل. انظر الدقة والبيانات.
الرمز البريدي
يتكوّن الرمز البريدي الإيراني من 10 أرقام ولا يبدأ بالصفر أبدًا. تُبقي PostalCode على الأرقام فقط (تُحوَّل الأرقام الفارسية والعربية أولاً، ثم تُحذف الفواصل مثل المسافات والشرطات) وتفحص الطول والرقم الأول:
$r = PostalCode::validate('۱۲۳۴۵-۶۷۸۹۰');
echo json_encode($r->details()); // {"normalized":"1234567890"}
print_r(PostalCode::validate('12345')->errors()); // [invalid_length]
print_r(PostalCode::validate('123456789012')->errors()); // [invalid_length]
print_r(PostalCode::validate('0123456789')->errors()); // [invalid_format]| الخطأ | المعنى |
|---|---|
invalid_length | عدد الأرقام ليس 10 |
invalid_format | يبدأ الرمز بالرقم 0 |
invalid_type، input_too_long | انظر معالجة المُدخَلات |
الشكل فقط. لا يوجد رقم تحقق في الرمز البريدي، ولا يُجرى أي فحص لنطاق المنطقة: الرمز المكوّن من 10 أرقام والذي لا يبدأ بالصفر يُعدّ صالحًا حتى لو لم يخصصه البريد الإيراني. ويُقبل عدد صحيح مثل 1234567890 لأن الرمز الصالح لا يبدأ بالصفر أبداً، لكن الأسلم مع ذلك أن تحتفظ بالرموز البريدية نصوصًا.
لوحة المركبة
الشكل
تفهم VehiclePlate لوحة السيارة الخاصة الشائعة: رقمان، وحرف واحد، وثلاثة أرقام، ورمز منطقة من رقمين، وتُكتب هكذا 12ب345 ایران 67. وتُتجاهل كلمة «ایران» والمسافات والشرطات والشرطات السفلية والمسافات الصفرية، فكلّ ما يلي يعني اللوحة نفسها:
echo VehiclePlate::normalize('۱۲ ب ۳۴۵ ایران ۶۷'); // 12ب34567
$r = VehiclePlate::validate('12ب345 ایران 67');
echo json_encode($r->details(), JSON_UNESCAPED_UNICODE);
// {"normalized":"12ب34567","two_digit":"12","letter":"ب","three_digit":"345","region":"67"}
print_r(VehiclePlate::parse('12ب345 ایران 67'));
// Array ( [two_digit] => 12 [letter] => ب [three_digit] => 345 [region] => 67 )
var_dump(VehiclePlate::parse('xx')); // NULLالحروف
يجب أن يكون الحرف واحدًا من: الف ب پ ت ث ج د ز س ش ص ط ع ف ق ک گ ل م ن و ه ی ژ. والصيغة الطويلة الف تُحسب حرفًا واحدًا. ويُقبل الحرفان اللاتينيان D وS للوحات الدبلوماسية والخاصة. وتُطبَّع صور الحروف العربية أولاً، فيُقرأ ك وي على أنهما ک وی:
echo json_encode(VehiclePlate::validate('12ي34567')->details(), JSON_UNESCAPED_UNICODE);
// {"normalized":"12ی34567","two_digit":"12","letter":"ی","three_digit":"345","region":"67"}
var_dump(VehiclePlate::isValid('12D34567')); // bool(true)
var_dump(VehiclePlate::isValid('12الف34567')); // bool(true)الأخطاء
invalid_format: الشكل لا يطابق (أعداد الأرقام خاطئة، أو حرف غير مسموح به، أو جزء مفقود).invalid_region: الشكل مطابق، لكن رمز المنطقة00، أو الجزء ذو الرقمين00، أو الجزء ذو الأرقام الثلاثة000. وتبقى الأجزاء المحلَّلة فيdetails().
print_r(VehiclePlate::validate('12ب345')->errors()); // [invalid_format]
print_r(VehiclePlate::validate('12ب34500')->errors()); // [invalid_region]
print_r(VehiclePlate::validate('00ب34567')->errors()); // [invalid_region]من المفيد أن تعرف. تفحص الأداة الشكل وكون الأرقام غير صفرية. وهي لا تعرف أي رموز المناطق موجودة، ولا أي حرف يخص أي نوع من المركبات، وفئات اللوحات الأخرى (الدراجات النارية والتخطيطات الأقدم ولوحات المناطق الحرة واللوحات الحكومية) خارج نطاقها. فالنتيجة الصالحة تعني أن اللوحة سليمة الصياغة، ولا تعني أنها صدرت فعلًا.
تُرجع VehiclePlate::parse() الأجزاء الأربعة في مصفوفة، أو null حين لا تكون اللوحة صالحة وفق القواعد نفسها المعتمدة في validate().
Was this page helpful?