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

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

والناتج هو نفسه تماما ,
ولاحظ في الداله printf ,
ندخل اليها مدخلان , النص و القيمه المستبدله , فتقوم
بإستبدال %s
ب قيمة
, ارأيت السهوله ؟ ملاحظه معنى
%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