متطلبات قبل البدء :أهداف الدرس:
- التحرير والتحكم بالنصوص
- جمع وتفصيل النصوص
- مقارنة النصوص
- مطابقة وبحث وتغيير النصوص
التحرير والتحكم بالنصوص :ترى كثيرا ان معظم المواقع تجعلك تضع معلومات وتقوم بإرسالها اليهم ,
سواء اسمك او بريدك او رسالتك , ولكن هل تعتقد انها تمر اليهم من غير فلتره
؟؟؟ متأكد ان جوابك سيكون لا, فالموقع لا يضمن ما يقوم بإدخاله المستخدم ,
هل هو المطلوب , او مجرد كلام ليس له معنى , اليس كذلك صحيحا ؟ فهنا تأتي
فائدة تحرير واالتحكم بالنصوص , وسوف نستعرض اليوم دوال كثيره تجعلك تتحكم
بالنصوص لكي تقوي برامجك وتجعلها محميه وقويه.
الدوال 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 )