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

تحديد تكرار كلمات مُعينة في ملف بلغة php

Mahmoud Alrashidi

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...