شرح لبيانات التحقق من البريد الإلكتروني شائعة الاستخدام في PHP
الكاتب:Eve Cole
وقت التحديث:2009-06-06 18:17:18
أعتقد أن أي شخص درس لغة PHP جيدًا يجب أن يعرف العبارة التالية للتحقق من البريد الإلكتروني، ولكن لا يستطيع الكثيرون فهمها حقًا:
<?php
إذا (eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,3}$"،$ بريد إلكتروني)) {
echo "لقد اجتاز بريدك الإلكتروني الفحص الأولي";
}
?>
في هذه الجملة، أول شيء هو تطبيق وظيفة eregi، وهي سهلة الفهم إلى حد ما. ما عليك سوى العثور على كتاب وسيعطيك شرحًا:
بناء الجملة: int ereg(نمط السلسلة، سلسلة السلسلة، الصفيف [regs])؛
قيمة الإرجاع: عدد صحيح/مصفوفة تقوم هذه الوظيفة بتوزيع السلاسل ومقارنتها بناءً على قواعد النمط.
يتم وضع القيمة التي يتم إرجاعها بواسطة نتيجة المقارنة في regs معلمة الصفيف. محتوى regs[0] هو السلسلة الأصلية، وregs[1] هي السلسلة الأولى التي تتوافق مع القواعد، وregs[2] هي السلسلة الثانية. الذي يتوافق مع القواعد، وما إلى ذلك. إذا تم حذف المعلمة regs، فسيتم مقارنتها ببساطة، وستكون قيمة الإرجاع صحيحة إذا تم العثور عليها.
ما ليس من السهل فهمه هو التعبير العادي السابق: ^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[ az]{2 ,3}$
في هذا التعبير العادي، "+" يعني أن السلسلة السابقة تظهر واحدة أو أكثر على التوالي؛ "^" يعني أن السلسلة التالية يجب أن تظهر في البداية، و"$" يعني أن السلسلة السابقة يجب أن تظهر في النهاية؛
"." هو أيضًا "."، حيث "" هو حرف هروب؛ "{2،3}" يعني أن السلسلة السابقة يمكن أن تظهر 2-3 مرات على التوالي. "()" تعني أن المحتوى المضمن يجب أن يظهر أيضًا في الكائن الهدف. "[_.0-9a-z-]" يعني أي حرف موجود في "_"، "."، "-"، الحروف في النطاق من a إلى z، والأرقام في النطاق من 0 إلى 9؛
بهذه الطريقة، يمكن ترجمة هذا التعبير العادي على النحو التالي:
"يجب أن تبدأ الأحرف التالية بـ (^)"، "يجب أن يحتوي الحرف على "_"، "."، "-"، أحرف في النطاق من a إلى z، وأرقام في النطاق من 0 إلى 9 ([ _.0-9a-z-])"، "يظهر الحرف السابق مرة واحدة على الأقل (+)"، @، "تتكون السلسلة من حرف موجود في النطاق من a إلى z، ومن 0 إلى 9 يبدأ بـ حرف في رقم، متبوعًا بحرف واحد على الأقل موجود في "-"، وأي حرف في النطاق من a إلى z، وأي رقم في النطاق من 0 إلى 9، وأخيرًا ينتهي بـ (([0-9a -z ][0-9a-z-]+.))), "الحرف السابق يظهر مرة واحدة على الأقل (+)"، "الحروف في النطاق من a إلى z تظهر 2-3 مرات وتنتهي به ([ az] {2,3}$)"
الأمر معقد، أليس كذلك؟ لهذا السبب يستخدم الناس التعبيرات العادية.