بسم الله الرحمن الرحيم
من أهم المهارات المطلوبة في برمجة PHP هي امكانية البحث عن حرف او حروف داخل نص معين، وتقوم بذلك الدالة strpos بكل سهولة.
الدالة strpos
تستخدم هذه الدالة بالطريقة التالية:
حيث:
string1 هو النص المطلوب البحث بداخله
string2 هو النص المطلوب البحث عنه
مثال1:
ففي هذا المثال بحثنا عن الرقم 5 داخل النص "1234567890". وتكون نتيجة تنفيذ الكود:
طبعا ستستغرب للوهلة الأولى لأن الكود أخبرك ان ترتيب الرقم 5 هو 4، ولكن لا تستغرب لأن PHP يبدأ العد من صفر.
ملحوظة هامة جداً: وهي ان الدالة strpos ترجع فقط ترتيب أول نتيجة تصل اليها، بمعنى آخر وبفرض ان النص يحتوي على الرقم 5 مرتين سترجع الدالة ترتيب اول رقم 5 يقابله فقط.
أما في حالة لو أردت البحث عن كل مرات تكرار الرقم 5 في النص، فستحتاج لاستخدامها بشكل مختلف، كما في المثال التالي.
مثال2:
كما لاحظت فقد استخدمناها هنا بشكل مختلف، ففي السطر رقم 2 اظهرت اول رقم 5 موجود بالنص، أما في السطر رقم 4 فقد استخدمناها لاظهار ترتي بالرقم الآخر وذلك عن طريق تمرير للدالة متغير ثالث وهو يسمى بالـ Offset وهي النقطة التي يبدأ البحث فيها من داخل النص، وبما أننا قد مررنا الـ Offset = $fivepos+1 يعني ترتيب الرقم 5 الأول + 1 ، فبذلك جعلنا البحث يبدا من الخانة التي بعد رقم 5 الأول.
ولكن هذه الطريقة غير عملية حيث يلزمها ان نعرف كم مرة يوجد الرقم 5 في النص وأيضاً نضطر الى تكرار الكود مما يعد نقطة ضعف في السكريبت.
لذلك وجب استخدام حلقة التكرار While لاظهار ترتيب جميع تكرارات الرقم 5 في النص، كالتالي:
ويكون ناتج تنفيذ هذا الكود هو:
للأمانة منقول من منتدى بى اتش بى
من أهم المهارات المطلوبة في برمجة PHP هي امكانية البحث عن حرف او حروف داخل نص معين، وتقوم بذلك الدالة strpos بكل سهولة.
الدالة strpos
تستخدم هذه الدالة بالطريقة التالية:
كود :
strpos(string1, string2);
string1 هو النص المطلوب البحث بداخله
string2 هو النص المطلوب البحث عنه
مثال1:
PHP كود :
$numberedString = "1234567890";
$fivePos = [color=black]strpos($numberedString, "5")[/color];
echo "ترتيب الرقم 5 داخل النص هو $fivePos";
كود :
ترتيب الرقم 5 داخل النص هو 4
ملحوظة هامة جداً: وهي ان الدالة strpos ترجع فقط ترتيب أول نتيجة تصل اليها، بمعنى آخر وبفرض ان النص يحتوي على الرقم 5 مرتين سترجع الدالة ترتيب اول رقم 5 يقابله فقط.
أما في حالة لو أردت البحث عن كل مرات تكرار الرقم 5 في النص، فستحتاج لاستخدامها بشكل مختلف، كما في المثال التالي.
مثال2:
PHP كود :
$numberedString = "1234567890123456789012345678901234567890";
$fivePos = strpos($numberedString, "5");
echo "ترتيب الرقم 5 في النص هو $fivePos";
$fivePos2 = strpos($numberedString, "5", $fivePos + 1);
echo "ترتيب الرقم 5 الآخر في النص هو $fivePos2";
ولكن هذه الطريقة غير عملية حيث يلزمها ان نعرف كم مرة يوجد الرقم 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
للأمانة منقول من منتدى بى اتش بى