رد جديد  مشاركة جديدة 
الدرس الرابع (البحث داخل النص باستخدام الدالة strpos)
الكاتب الرسالة
Pepo
عضو مميز



المشاركات : 5,096
مجموعة : الاعضاء
الإنتساب : 30-12-2006
الحالة : غير متصل
السمعة : 37
الرد : #1
الدرس الرابع

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

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

من أهم المهارات المطلوبة في برمجة PHP هي امكانية البحث عن حرف او حروف داخل نص معين، وتقوم بذلك الدالة strpos بكل سهولة.

الدالة strpos
تستخدم هذه الدالة بالطريقة التالية:

كود :
strpos(string1, string2);

حيث:
string1 هو النص المطلوب البحث بداخله
string2 هو النص المطلوب البحث عنه

مثال1:

كود PHP :
$numberedString "1234567890";
$fivePos = [color=black]strpos($numberedString"5")[/color];
echo 
"ترتيب الرقم 5 داخل النص هو $fivePos"

ففي هذا المثال بحثنا عن الرقم 5 داخل النص "1234567890". وتكون نتيجة تنفيذ الكود:

كود :
ترتيب الرقم 5 داخل النص هو 4

طبعا ستستغرب للوهلة الأولى لأن الكود أخبرك ان ترتيب الرقم 5 هو 4، ولكن لا تستغرب لأن PHP يبدأ العد من صفر.
ملحوظة هامة جداً: وهي ان الدالة strpos ترجع فقط ترتيب أول نتيجة تصل اليها، بمعنى آخر وبفرض ان النص يحتوي على الرقم 5 مرتين سترجع الدالة ترتيب اول رقم 5 يقابله فقط.

أما في حالة لو أردت البحث عن كل مرات تكرار الرقم 5 في النص، فستحتاج لاستخدامها بشكل مختلف، كما في المثال التالي.

مثال2:

كود PHP :
$numberedString "1234567890123456789012345678901234567890";
$fivePos strpos($numberedString"5");
echo 
"ترتيب الرقم 5 في النص هو $fivePos";
$fivePos2 strpos($numberedString"5"$fivePos 1);
echo 
"ترتيب الرقم 5 الآخر في النص هو $fivePos2"

كما لاحظت فقد استخدمناها هنا بشكل مختلف، ففي السطر رقم 2 اظهرت اول رقم 5 موجود بالنص، أما في السطر رقم 4 فقد استخدمناها لاظهار ترتي بالرقم الآخر وذلك عن طريق تمرير للدالة متغير ثالث وهو يسمى بالـ Offset وهي النقطة التي يبدأ البحث فيها من داخل النص، وبما أننا قد مررنا الـ Offset = $fivepos+1 يعني ترتيب الرقم 5 الأول + 1 ، فبذلك جعلنا البحث يبدا من الخانة التي بعد رقم 5 الأول.

ولكن هذه الطريقة غير عملية حيث يلزمها ان نعرف كم مرة يوجد الرقم 5 في النص وأيضاً نضطر الى تكرار الكود مما يعد نقطة ضعف في السكريبت.

لذلك وجب استخدام حلقة التكرار While لاظهار ترتيب جميع تكرارات الرقم 5 في النص، كالتالي:

كود PHP :
$numberedString "1234567890123456789012345678901234567890";
$offset 0;
$fiveCounter 0;
while(
$offset strpos($numberedString"5"$offset 1))
{
    
$fiveCounter++;
    echo 
"<br />الخمسة #$fiveCounter ترتيبها - $offset";


ويكون ناتج تنفيذ هذا الكود هو:

كود :
الخمسة #1 ترتيبها - 4
الخمسة #2 ترتيبها - 14
الخمسة #3 ترتيبها - 24
الخمسة #4 ترتيبها - 34


اخر مواضيعى

مع التحية Pepo
لولا ان لهذا المنتدى اخوة واخوات مثلكم.. ما كان له وجود حتى الأن
احبكم فى الله
2007-03-21 05:10 PM
زيارة موقع العضو إعرض جميع مشاركات العضو إقتبس الرسالة فى رد

رد جديد  مشاركة جديدة 
الدرس الرابع (البحث داخل النص باستخدام الدالة strpos)

إحتمالات التقييم ...
المشاركة : الكاتب الردود : المشاهدات : آخر رد
  الدرس الأول: مقدمة ومفاهيم عن لغة PHP Pepo 6 1,040 2008-04-09 08:50 PM
آخر رد: M!$s Blue
  الدرس الثانى: اول برنامج PHP Pepo 2 1,131 2008-02-16 11:29 AM
آخر رد: Pepo
  الدرس الثامن: النماذج وانواع ارسال البيانات Pepo 2 707 2008-02-05 04:52 PM
آخر رد: Pepo
  الدرس العاشر: التحقق من وطباعة محتوى النماذج Pepo 0 682 2007-03-31 02:25 PM
آخر رد: Pepo
  الدرس التاسع: انواع النماذج وطريقة كتابتها Pepo 0 910 2007-03-25 05:33 AM
آخر رد: Pepo
  الدرس السابع: متفرقات عن لغة PHP Pepo 0 516 2007-03-25 01:26 AM
آخر رد: Pepo
  الدرس السادس: عبارات شرطيه وتكرار اخرى Pepo 0 584 2007-03-24 04:31 AM
آخر رد: Pepo
  الدرس الخامس: عبارات التكرار Pepo 0 488 2007-03-23 02:16 AM
آخر رد: Pepo
  الدرس الرابع: العبارات الشرطيه Pepo 0 563 2007-03-22 09:13 PM
آخر رد: Pepo
  الدرس الثالث: المتغيرات , الثوابت و المعاملات Pepo 0 724 2007-03-22 06:37 PM
آخر رد: Pepo

إشترك بالمشاركة | إضافة المشاركة للمفضلة
الذهاب إلى :