اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يُمكنك عمل ذلك من خلال هذه الطريقة:

  • تعريف مصفوفة ترابطية تضم الكلمات التي تبحث عنها، حيث المفتاح هو الكلمة و القيمة هي عدد التكرار و تكون مبدئياً 0
  • فتح الملف للقراءة
  • كرر حتى تصل لنهاية الملف:
  • -- إقرأ السطر و خزنه في مُتغير.
  • -- تقسيم السلسلة النصية المُكونة للسطر إلى كلمات و تخزينها في مصفوفة
  • -- من أجل كل كلمة من الكلمات:
  • -----> تحقق أنها أحد الكلمات التي تبحث عنها و إذا وجدتها كذلك إرفع عدد تكرارها بِ 1 
  • إطبع عدد تكرار كل كلمة.

و هذا هو الكود الخاص ب الخوارزمية بإستخدام لغة php:

<?php

/*
 تعريف مصفوفة بالكلمات التي نريد البحث عن تكرارها
 مصفوفة ترابطية حيث أن كل كلمة هي المفتاح و القيمة توضح عدد التكرارات
 مع وضع قيمة التكرار لكل كلمة 0 مبدئياً
*/
$count_array = ["if" => 0,"lol" => 0]; 


$file = fopen('data.txt', "r"); // فتح ملف البيانات للقراءة


/*
    عمل حلقة بينما هناك مُحتوى للقراءة و بما أننا لم نصل إلى نهاية الملف
*/
while(!feof($file))
{
    $line = trim(fgets($file)); // قراءة سطر كل مرة و مسح المسافات الإضافية في الأول و الأخير و تخزينه في مُتغير

    /*
        الدالة explode
        تُساعدنا في تقسيم سلسلة نصية إلى مصفوفة بإستعمال 
        separator
        هو أول مُعامل
    */
    $words = explode(" ", $line); // مصفوفة الكلمات المُكونة للسطر الذي قرأناه من الملف

    /*
        نقوم بعمل حلقة للمرور على كافة كلمات السطر 
        و من أجل كل كلمة نتحقق إن كانت أحد الكلمات التي نبحث عنها
        إذا كان الحالة نرفع عدد التكرار للكلمة
    */
    foreach($words as $word) { 
        if (array_key_exists($word, $count_array)) {
            $count_array[$word]++;
        }
    }
}

/*
    هذه الحلقة لطباعة عدد تكرار كل كلمة
*/
foreach ($count_array as $word => $number) {
    echo $word . " occurred " . $number . " times" . "<br>";
}

و هذا مثال لملف data.txt:

asd lol rotflol if
world lol rotflol world
bubu hehe lol gnigni lol if if
if lol hehe if world lol
asd lol rotflol

و هذه نتيجة السكربت:

if occurred 5 times
lol occurred 7 times

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...