php : التعابير العادية

مصفوفات مُكوّنات النص

آخر تحيين: 27-04-2014

مُعامِلات التكرار php استعمال التعابيرالعادية


لن يقتصر بحثنا على كلمات أو جمل مفيدة ، كما فعلنا سابقا ، فهذا ليس من البحث في شيء . سنتسعمل مصفوفات مكونات النص لذلك ، هي مصفوفات تتيح لنا اختزال طرق بحثنا من جهة ، و من جهة أخرى يمكننا البحث عن مجال واسع من الأنماط في نفس الوقت .
في التعابير العادية يمكننا استعمال العدد الذي نريده من المصفوفات . و يجب إحاطة كل واحدة بمعقوفتين [مكونات النص] .
داخل المعقوفتين نُحدّد مكوّنات النص التي نريد البحث عنها .
سنبدأ بمثال بسيط :
"#t[ow]o#"
مصفوفتنا هي ما يوجد بين المعقوفتين . و قد وضعنا حرفين ، و هذا يعني أن النمط الذي نبحث عنه ، يجب أن يضمّ أحد الحرفين "o" أو "w" . هذا النمط يطابق إذاً الكلمتين "too" أو "two" فقط .
لتوسيع كلمات البحث ، يمكننا إضافة الحروف التي نرغب فيها ، مثلا :
"#t[aow]o#"
في هذه الحالة الكلمات المطابقة للنمط هي : إمّا "too" أو "two" أو "tao"
لنرى بعض الأمثلة :

النمطالنصالنتيجة
#t[aow]o#tao is a Chinese conceptصحيح
#^t[aow]o#it's too lateخطأ
#^t[aow]o#too lateصحيح
#t[aow]o$#me tooصحيح

و الآن ، إذا أردنا إتاحة جميع الحروف اللاتينية في مصفوفتنا ؟ من الحرف "a" إلى الحرف "z" سنكتبها داخل المصفوفة . لا تنزعجوا فلن نكتب كل هذه الحروف ، توجد طرق جاهزة و مختزلة . سنكتفي بتعيين حرف البداية و حرف النهاية و نفصل بينهما بعارضة "-" :
"#t[a-z]o#" هذه الشيفرة تساوي تماماً لهذه : "#t[abcdefghijklmnopqrstuvwxyz]o#" .
بعض الأمثلة

المصفوفةمُكوّنات المصفوفة
[c-h][cdefgh]
[v-b][vwxyzab]
[a-z]جميع الحروف اللاتينية من الحجم الصغير
[A-Z]جميع الحروف اللاتينية من الحجم الكبير
[a-zA-Z]جميع الحروف اللاتينية من الحجم الصغير و الكبير
[0-9]جميع الأرقام من "0" إلى "9"
[1-5]الأرقام من "1" إلى "5"
[a-zA-Z0-9]جميع الحروف اللاتينية و الأرقام

لنرى أمثلة لبعض الأنماط باستعمال المصفوفات

النمطالنصالنتيجةالتوضيح
#[a-z]#1.My first phrase !صحيحلأن النص يحتوي على حرف صغير
#[0-9]#1.My first phrase !صحيحلأن النص يحتوي على رقم
#[a-z]$#1.My first phrase !خطألأن النص لا ينتهي بحرف صغير
#^[a-z]#1.my first phrase !خطألأن النص لا يبدأ بحرف صغير
#^[a-z0-9]#1.My first phrase !صحيحلأن النص يمكن أن يبدأ إما بحرف صغير أو رقم
#[A-Z]#1.My first phrase !صحيحلأن النص يحتوي على حرف كبير
#[A-Z]#ithis phraseصحيحلأن الرّمز "i" يُلغي حجم الحروف . إذا لم نرغب
في استعماله ، يمكننا كتابة نفس النمط كالتالي :
#[a-zA-Z]#

لحد الآن وضعنا داخل مصفوفاتنا ، مُكوّنات النص التي نرغب لنصنا أن يضمها . ماذا لو أردنا لنصنا أن يضم جميع المكوّنات ، باستثناء الأرقام ؟
أي أننا سنقبل بنص يضم الحروف الصغيرة و الكبيرة و جميع الرّموز الأخرى ، إلا الأرقام ، فلا.
سنستعمل رمزا تعرفونه جيّدا : "^" . استعملناه سابقا خارج المصفوفة ، يمكننا أن نوظّفه أيضا داخلها:
#[^0-9]#
. هذا النمط يعني أننا لا نريد الأرقام في نصنا ، و نقبل جميع مكونات النص الأخرى .
تذكروا جيّدا ، أن الرمز "^" . خارج المصفوفة يعني أن نصنا يجب أن يبدأ بكذا ، و داخل المصفوفة يعني أننا لا نرغب بكذا في نصنا
بعض الأمثلة :

النمطالشرحمثالالنتيجة
#[^0-9]#لا نريد الأرقام في نصناIt was in April 2013 !خطأ
#[^A-Z0-9]#لا نريد الأرقام و الحروف الكبيرةit was in april !صحيح
#^[^a-z0-9]#يجب للنص أن يبدأ بشيء آخر غير الحروف الصغيرة و الأرقامIt was in April 2013 !صحيح
#^[^a-z0-9]#""it was in April 2013 !خطأ