الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس حول التعابير القياسية

بدأه pmoki في 24 يوليو 2012 · 3 رد · 1,272 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله تعالى و بركاته

بسم الله الرحمن الرحيم،

اللهم صلي على سيدنا محمد و على آله و صحبه أجمعين ، و بعد اللهم أخرجنا من ظلمات الجهل و الكفر إلى أنوار المعرفة و العلم و

من وحول الشهوات إلى جنات القربات ، اليوم بفضل الله نأخذ نظرة عن النعابير القياسية من 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 مرة

الى هنا السلام عليكم و رحمة الله و تعالى و بركاته

5
#2

بارك الله فيك ، انا شخصيا استفدت وفي انتظار المزيد

If your actions inspire others to dream more, learn more, do more and become more, you are a leader

Best Regards

Feras Abualrub

#3

أكمل بارك الله بك ... نريد المزيد من الأمثله :) درس جميل ومفيد ولكن يحتاج إلى تتمه

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#4

بارك الله فيك و جعله الله في ميزان حسناتك

مواضيع مشابهة