الدعم العربي
الدرس الرابع - نسخة قابلة للطباعة

+- الدعم العربي (https://www.mybbarab.com)
+-- قسم : :: . + تطوير المواقع و المنتديات و لغات برمجة المواقع + . :: (https://www.mybbarab.com/forum-78.html)
+--- قسم : قسم تطوير المنتديات والمواقع ولغات البرمجه (https://www.mybbarab.com/forum-117.html)
+---- قسم : نقاش عام حول PHP و MYSQL (https://www.mybbarab.com/forum-49.html)
+---- الموضوع : الدرس الرابع (/thread-458.html)



الدرس الرابع - Pepo - 2007-03-21

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

من أهم المهارات المطلوبة في برمجة 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

للأمانة منقول من منتدى بى اتش بى