السلام عليكم و رحمة الله تعالى و بركاته
بسم الله الرحمن الرحيم،
اللهم صلي على سيدنا محمد و على آله و صحبه أجمعين ، و بعد اللهم أخرجنا من ظلمات الجهل و الكفر إلى أنوار المعرفة و العلم و
من وحول الشهوات إلى جنات القربات ، اليوم بفضل الله نأخذ نظرة عن النعابير القياسية من 0
تدعم لغة PHP نوعان من التعابير القياسيه , وهي POSIX و PERL , الاول يكون مدمج مع اللغه تلقائيا ولكن الاخر يحتاج الى ان تقوم بتنصيبه ,, لا تقلق فعند استخدامك التنصيب العادي للغة سوف يتم وضع الاثنان معا , يعتبر النوع الاول اسهل في التعلم والطبيق من النواع الثاني , ويتم ترجمته وتشغيله اسرع ,, ولكنه ليس امن كالثاني :) . جميع ما يعرفه البعض عباره عن مقانرة نصوص متطابقه او اجزاء من النصوص ولكن ماذا لو احتجنا الى ان نقوم بشيئ اكثر من ذلك ,, فالتعابير القياسيه هي مبتغانا ,, وسوف نقم بالتعلم عليها والتطبيق عليها.
لمحة عن posix
و هي التعابير القياسية الخاصة باللغة ذاتها
لكنها تعتبر ثقيلة مقارنة بالPCRE
الPCRE
و هي التعابير القياسية الخاصة بلغة البيرل
و هي أكثر سرعة
دعونا ندخل الى الأهم
الآن سنتطرق الى الدوال الخاصة بالتعابير القياسية
preg_ filter
preg_ grep
preg_ last_ error
preg_ match_ all
preg_ match
preg_ quote
preg_ replace_ callback
preg_ replace
preg_ split
سنتطرق نحن فقط للدالتين
preg_replace و preg_match
و البقية ابحثو عنها عندما تحتاجونها
دعونا نبدأ بالدالة الأكثر استعمالا
preg_match
هاته الدالة تساعدنا على البحث في جملة أو نص على حرف كلمة أو جملة
و تمتاز بدقتها نظرا للخيارات التي تعطينا اياها و أيضا بحساسيتها اتجاه الأحرف
دعونا نبدأ في التطبيق حتى تتضح الفكرة
<?php
$text = "welcome to my world";
if (
preg_match("#welcome#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>"#welcome#"
نلاحظ هنا أننا نريد أن نبحث عن كلمة welcome
و دائما يجب وضع الباترن كما يسمونه في التعابير القياسية بين علامة الدياز #
و الباترن هو الكلمة المراد البحث عنها
نرجع لمثالنا
طلبنا منه أن يبحث عن كلمة welcome فان وجدها يطبع ok اما اذا كان العكس يطبع bad
النتيجة
النتيجة
اقتباسok !!
و الآن دعونا نمر الى المحور الثاني
سنتطرق في هذا المحور الى خصائص الدالة preg_match
طبعا اذا كنت تريد البحث عن كلمة حرف أو جملة
فالدالة تمنحك خواص جميلة جدا
دعونا نتطرق اليها واحد بواحد
الأول : المعامل أو و رمزه |
<?php
$text = "welcome to my world";
if (
preg_match("#welcome | back#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسok !!
هنا طلبنا من الدالة البحث عن كلمة welcome أو back
و اذا وجد احداهما يرجع صحيح أما اذا كان العكس فانه يرجع القيمة خطأ
دعونا نمر الى نقطة أخرى
اذا أردت أن تتأكد أن الجملة تبدأ بحرف أو كلمة معينة
فيمكنك الاستعانة بهذا المعامل
ورمزه هو ^
<?php
$text = "welcome to my world";
if (
preg_match("#^world#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسbad !!
الآن الى معامل البحث في نهاية الجملة
و رمزه $
<?php
$text = "welcome to my world";
if (
preg_match("#world$#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسok !!
الآن دعونا نمر الى دمج المعاملين معا
<?php
$text = "welcome to my world";
if (
preg_match("#^welcome to my world$#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسok !!
سنرى في هذه المرحلة
ما يسمى بالكلاسات
و هي تسمح لنا بالحث عن حرف حرفين أو أكثر
المهم دعونا نمر الى الكود البرمجي و الذي سيلخص الكثير من الكلام
<?php
$text = "Welcome to my World";
if (
preg_match("#[w]#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسbad !!
هنا طلبنا منه البحث عن الحرف w صغير
و ذلك بالرغم من وجوده لكن بالشكل الكبير A فانه يطبع لنا خطأ
دعونا نتقدم أكثر
مار أيكم لو نطلب البحث عنه أكثر من حرف
<?php
$text = "Welcome to my World";
if (
preg_match("#[adfrtghjvx]#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسok !!
لكن ماذا لو أردنا البحث من أن الكلمة تحتوي على حروف مرتبة
مثلا هكذا
[abcdefg] الحل سهل يكون كمايلي [a-g]
و علامة - تعني مجال
كأنك تقول له من a الى g
و نفس الشئ بالنسبة لأرقام
توضيح لكم العلامات الخاصة
في حالة ان صادفتوها وهي
# ! ^ $ ( ) [ ] { } ? + * . \ |
لكن أثناء استعمالها يجب أن تسبق بعلامة \ لاحظو جيدا
\ و ليست /
و سنرى ذلك من خلال مثال
<?php
$text = "Are you there ?";
if (
preg_match("#there \?#",$text)
) {
echo "ok !!";
} else {
echo "bad !!";
}
?>النتيجة
اقتباسok !!
و الآن سنشرح بعض المعاملات و هي
+ * ?
نشرحها
العلامة + و تعني يجب أن يتواجد مرة واحدة على الأقل
العلامة ? و تعني أنه ان كان موجود أو لا
العلامة * وتعني أنه يتواجد أكثر من مرة
لدينا حرف واحد و نريده أن يتكرر 5 مرات ماذا سنفعل ؟
الحل سهل و هو كمايلي
(o) {x}
الحرف o نريده أن يتكرر x مرة
الى هنا السلام عليكم و رحمة الله و تعالى و بركاته
