الدرس التاسع عشر: دوال التحكم بالنصوص

متطلبات قبل البدء :

  • لا يوجد

أهداف الدرس:

  • التحرير والتحكم بالنصوص
  • جمع وتفصيل النصوص
  • مقارنة النصوص
  • مطابقة وبحث وتغيير النصوص


التحرير والتحكم بالنصوص :

ترى كثيرا ان معظم المواقع تجعلك تضع معلومات وتقوم بإرسالها اليهم , سواء اسمك او بريدك او رسالتك , ولكن هل تعتقد انها تمر اليهم من غير فلتره ؟؟؟ متأكد ان جوابك سيكون لا, فالموقع لا يضمن ما يقوم بإدخاله المستخدم , هل هو المطلوب , او مجرد كلام ليس له معنى , اليس كذلك صحيحا ؟ فهنا تأتي فائدة تحرير واالتحكم بالنصوص , وسوف نستعرض اليوم دوال كثيره تجعلك تتحكم بالنصوص لكي تقوي برامجك وتجعلها محميه وقويه.

الدوال chop و ltrim و trim :

تستخدم هذه الدوال لكي نضمن ان المستخدم لي يضع اي فراغات في المدخل , يمكن ان تقول هذا الشيئ غير ضروري , ولكنه ضروري اذا كنت ستحفظ هذه المعلومه في قواعد البيانات او تريد مقارنة النص , فالمسافه محسوبه في النصوص , الداله trim تقوم بألغاء اي مسافات من بداية ونهاية النص, لاحظ المثال التالي:

عرفت الطريقه الان ؟ بالنسبه للداله ltrim فهي تقوم بنفس عمل trim ولكن تلغي المسافات من الجزء الايسر , اي من بداية النص , اما الداله chop فتقوم بألغاء المسافه من الجزء الايمين , اي اخر النص

الدالتين printf و sprintf :

تقوم هذه الدالتين بنفس عمل الداله print والفرق بينهما وبين العباره print انها تقوم بطباعة النص بطريقه معينه, لم تفهم ما اعنيه ؟ لنأخذ مثالا , تخيل ان لديك عدد ( 2.258982 ) على سبيل المثال , وتريد ان تطبع هذا العدد ولكن بالطريقه التاليه ( 2.25 ) فسوف تستخدم هذه الدالتين, الاختلاف بين printf و sprintf ان الاولى تقوم بالطباعه ام الثانيه فتقوم بإرجاع النص المعدل. الان لاحظ المثال التالي:

والناتج هو نفسه تماما , ولاحظ في الداله printf , ندخل اليها مدخلان , النص و
القيمه المستبدله , فتقوم بإستبدال %s ب قيمة $total , ارأيت السهوله ؟ ملاحظه معنى %s هو ( استبدل بالنص او القيمه الثانيه المدخله ). الان لو اردنا ان نطبع العدد هكذا 2.25 سوف نقوم بالتالي:

وناتجنا هو التالي:

يمكنك ان تدرج اكثر من خاصية تحويل ( % ) في النص , لاحظ المثال التالي اضغط على
الصوره للتكبير :


ملاحظه ( كل خواص التحويل تبدأ بي علامة % , ولو احتجت يوما ما الى طباعة هذا الرمز الى المتصفح استخدم الطريقه %% ) , لكي تعرف الخواص الاخرى في التحويل لاحظ المثال الجدول التالي

النوع

المعنى

b

يترجم على شكل عدد صحيح ويطبع على شكل ثنائي

c

يترجم على شكل عدد صحيح ويطبع على شكل على حروف

d

يترجم على شكل عدد صحيح ويطبع على شكل عشري

f

يترجم على شكل عدد عشري ( double ) ويطبع على شكل عشري ( float )

s

يترجم على شكل نص ويطبع على شكل نص

الدوال strtoupper و strtolower و ucfirst و ucwords :

الداله strtoupper تقوم بجعل كل الحرووف كبيره ( باللغه الانجليزية ) , اي تقوم بتحويل a الى A وهكذا

الداله strtolower تقوم بجعل كل الحروف صغيره ( باللغه الانجليزية ) اي تقوم بتحويل A الى a وهكذا

الداله ucfirst تقوم بجعل اول حرف من الجمله بالحاله الكبيره

الداله ucwords تقوم بجعل اول حرف من كل كلمه في النص الى الحاله الكبيره

والناتج هو

جمع وتفصيل النصوص :

في كثير من الاحيان نريد ان نفصل نص عن النص الكلي , لكي نقارن او نتحكم او اي شي اخر , وبعض الاحيان نريد ان نقوم بجمع النصوص مع بضها البعض وسوف نتعلم الان الطرق لعمل ذلك , 

الداله explode و implode و join :

تستخدم الداله explode لفصل النص عن بعضه البعض وتقوم بإرجاع الناتج على شكل مصفوفه , فلو ان المستخدم ادخل بريده الالكتروني , ونريد ان نعرف ماهي الشركه الي يستخدمها سوف نقوم بالتالي :

الدالتين implode و join متطابقه تماما , فلو اردنا جمع نص مع بعضه البعض سوف نقوم بعمل التالي:

الداله substr:

تستخدم هذه الداله لتعطيك تحكما في نص جزء من نص اكبر بتحديد البدايه والنهايه وتقوم بإرجاع النص المطلوب, فمثلا لو لديك النص ( Hello World ) وتريد ان تأخذ كلمة hello فقط , فسوف تقوم بالتالي:

الان لو تلاحظ كيفية عمل الداله فهي كالتالي ( قارن الارقام مع الصوره بالاسفل ) :

1 – النص المراد ان تأخذ جزأ منه

2 – مكان البدايه

3 – مكان النهايه

نبدأ النصوص دائما من 0 , وفي مثالنا من 0 الى 5 , نعني به 0 و 1 و 2 و 3 و 4 , لاحظ
التالي:

لو اردنا الجمله من مكان معين الى النهايه فسوف نضع قيمة البدايه فقط , لاحظ التالي:

وسوف ينتج لنا llo world

مقارنة النصوص :

في السابق قلنا اننا لو اردنا ان نقارن سوف نستخدم == او === اليس ذلك صحيحا ؟ هناك طرق اخرى للمقارنه سوف نراها الان ,

الدوال strcmp و strcasecmp:

هذه الدوال تستخدم لمقارنة النصوص , فالداله strcmp تقوم بإعطائنها نصين وتقوم بمقارنتهما , اذا كانو متساوييان سوف ترجع لك القيمه 0 , اما اذا كان الاول اكبر من الثاني سوف ترجع رقم اكبر من الصفر واذا كان اصغر سوف ترجع قيمه اقل من الصفر ( اي بالسالب ) , وهذه الداله حساسه لحالة الاحرف , لاحظ التالي:

الداله strcasecmp مطابقه للداله strcmp والفرق ان strcasecmp حساسه لحالة
الاحرف

الداله strlen :

تستخدم هذه الداله لمعرفة طول نص معين , وطريقتها كالتالي:

مطابقة وبحث وتغيير النصوص :

دوال البحث عن النصوص strstr و strchr و strrchr و stristr :

الدالتين strstr و strchr متطابتقين تماما و حساسه لحالة الاحرف , مع ان الثانيه تستخدم للبحث عن الاحرف ولكن الاولى تؤدي نفس العمل , وهي الافضل والمناسبه دائما , طريقة هذه الداله كالتالي:

1 – النص الكلي

2 – الكلمه المراد البحث عنها

اذا وجدت الداله كلمه مطابقه فسوف تقوم بإرجاع الكلمه ثم باقي الجمله , وتهمل ما قبل
الكلمه التي عثر عليها , لاحظ ناتج مثالنا بالاعلى

بالنسبه للداله stristr فهي مطابقه ل strtsr والفرق هو انها غير حساسة لحالة الاحرف, اما الداله strrchr فهمي ايضا مطابقه والفرق الوحيد هو انه اذا كانت الكلمه مكرره مرتين في الجمله , فسوف تقوم بإرجاع النص من اخر مكان تكررت فيه الجمله, على عكس strstr فهمي تقوم بإرجاع النص من اول مكان تكررت فيه الجمله

دوال تحديد اماكن النص strpos و strrpos :

هذه الدوال مشابه تقريبا الى strstr والفرق ان هذه الدوال تقوم بإرجاع المكان الرقمي للنص , لاحظ المثال التالي,

وسوف تقوم هذه الداله بإرجاع الرقم 6 , لان الكلمه world بدأت من الخانه 6 , قم بالعد وقارن 🙂

الداله strrpos سوف تقوم بأرجاع اخر مكان ظهر به النص على عكس strpos , كما تعلمنا في دوال البحث في الاعلى

دالة تغيير النصوص str_replace :

تقوم هذه الداله str_replace بإيجاد نص وتغييره , وهي مفيده جدا لتتغير السريع , وطريقتها كالتالي:

1 – الكلمات التي نريد استبدالها

2 – الكلمات الجديده

3 – الجمله

لاحظ انه بالامكان ان نجعل الكلمات الجديده , والكلمات القديمه , في مصفوفه كل واحده على حده , لكي نقوم بإستبدال اكثر من كلمه , ويمكن ايضا من غير مصفوفه , حيث ان جميع الحالات مسموحه , واصبحت هكذا من نسخة PHP رقم 4.0.5



سؤال على الدرس :

1 – قم بإنشاء نموذج مراسله بريدية , فيه اسم المرسل , البريد , الرساله , وقم بوضع بعض تحكمات النصوص ( على سبيل المثال البريد لا يكون اقل من 3 احرف , الرساله لا تحتوي على كلمات غير لائقه )


الـــدرس الــقادم :

سوف نتعرف في الدرس القادم على مايسمى ( regular expressions )

Comments are closed.