الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]كود php لـ ترتيب الكلمات أبجديا

بدأه عبقري زمانه في 14 أبريل 2012 · 12 رد · 1,414 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله..

عندي مشكلة واجهتني في البرمجه بلغة PHP.. لقلة خبرتي بها

أنا ومجموعه من الزملاء قمنا بعمل كود يقوم بتحويل النص من ملف pdf الى text

ومن ثم عمل preprocess له وحذف علامات الترقيم والأرقام وحذف كلمات التوقف وإرجاع الكلمات إلى أصلها..

.. وهنا المشكله ..

ومن ثم ترتيب الكلمات أبجديا وتخزينها في ملف نصي بدون حذف تكرارها مثلا apple apple orange

حيث انه بعد ذلك يتم حفظ الكلمات مع عدد تكرارها في ملف آخر apple |2 orange <<أذكر رقم التكرار.. وتكون مرتبه أبجديا

فكيف يتم عمل ذلك؟ (عملية الترتيب الأبجدي)

..

أرجو مساعدتي في ذلك لحاجتي الشدييييده له

..

وجزاكم الله خير

#2

أنت وصلت إلى هذه النتيجه

apple orange apple

الآن تقوم بتحويل النص إلى مصفوفه عن طريق الداله

$array_word = explode('',$text);

بعد ذلك تقوم بترتيب قيم المصفوفه أبجديا عن طريق الداله sort

الآن تقوم بإستخدام الداله array_count_values لترجع لك مصفوفه تحتوي على كل الكلمات بدون تكرار مع عدد تكرار كل كلمه

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3

شاكر لك أخوي بسام..

وهذه الطريقه تفيد في حالة عمل إضافة ملف واحد لمره واحده

ولكن المطلوب ترتيب كلمات أكثر من ملف وفي أوقات مختلفه

ويكون مخزن في ملف نصي جميع الكلمات التي تم قرائتها 
apple|1   orange|1   banana|1   orange|1 apple|1   orange|1

حيث يوجد به الكلمات مكرره مع رقم الملف لها..

ومن ثم يتم نقلها من ملف نصي إلى آخر ويحسب فيه عدد التكرارات وترتب أبجديا

مثلا يكون مخزن في الملف النصي بعد الترتيب:
apple    1|2 
banana    1|1
orange   1|3

حيث ان الخانه الأولى تمثل الكلمات وتكون مرتبه أبجديا .. ومن ثم رقم الملف الذي ذكرت فيه الكلمه وثم عدد تكرارها

وهكذا..

وعند إضافة ملف جديد فإنه يصبح الشكل بعد الترتيب والإضافه واخذها من الملف النصي الأول:
apple    1|2    2|3
banana    1|1    2|1
grape   2|4
orange   1|3

..

فهل هناك سبيل لعمل هذا الكود؟

وهو شبيه بمبدأ indexing

..

وأعتذر عن عدم توضيح الفكره بشكل كامل في المره السابقه

وجزاكم الله خير

#4

أحتاج الى جواب جزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة عبقري زمانه في 17 أبريل 2012 في 04:39

#5

:(

#6

ياعبقري وضحتلك أهم الدوال لإنشاء هذا العمل جرب أنشئ سكريبت وأي مشكله بتحدث رح نساعدك , بس ورجينا التجربه مارح أعطيك الحل مجانا :)

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#7
بسام العيساوي كتب:

ياعبقري وضحتلك أهم الدوال لإنشاء هذا العمل جرب أنشئ سكريبت وأي مشكله بتحدث رح نساعدك , بس ورجينا التجربه مارح أعطيك الحل مجانا :)

أخوي بسام بأذن الله سأريك محاولاتي قريبا .. ولكن المشكله ان التصور للكود لم يكتمل عندي بعد

فكرت انه أعمله لووب يدور على كل محتويات الملف النصي الثاني << الذي يحوي الكلمات كلها مع تكراراتها ..

ويضيفها في مصفوفه مؤقته

ويمسك أول خانه التي تحوي الكلمه ويعمل لها سورت قبل الإضافه في الملف النصي

..

تقريبا هذا التصور الحالي اللي في بالي

فهل هو منطقي وصحيح أم ينقصه بعض الاشياء؟ ..

وهل كل كلمه أدخلها من المصفوفه المؤقته أحتاج لعمل مقارنه بينها وبين الكلمات المخزنه في الملف النصي؟

..

وجزاك الله خير أخوي بسام

#8

يارب تضبط معي الطريقه

:)

#9

حاولت إني أعمل الكود .. ولكن ماضبطت معي الطريقه

وخرب كل الإندكس وماصار يخزن شي ><!!

..

بحاول مره ثانيه وانزل الكود اللي طلع معي بكره

#10

بما إنك بتحاول رح نبلش بأول ملف

طبعا رح تسأل إذا الملف الإنديكس غير موجود إذا هذا أول ملف , النتيجه قمت بإظهارها إنتا لازم تخزنها بملف نصي وتكمل شغل :)

الكود

$fileNo=1;
$array_word= explode(' ',implode(file('d:/f.txt'),' '));

asort($array_word);
$array_count= array_count_values($array_word);

foreach($array_count as $k=>$v){
  $result.="$k $fileNo|$v\n";
}

echo $result;

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#11

مشكور أخوي بسام

جربت الكود تبعك ولكن يطلع لي خطأ في السطر هذا

 $result.="$k $fileNo|$v\n";

:(

#12

أخوي بسام هذي تقريبا الفنكشن اللي جربتها

ولكن يطلع لي فيها أرور في فنكشن write .. مو عارف ليه ><!

  $file2=file_get_contents("./main_index.txt") ;

                 $kw2 = explode($newlinecode, $file2);
                   for($j=0;$j<count($kw2);$j++){
                                     $k2 = explode("  ", $kw2[$j]);
                                    sort($k2);
                                    $fff2=fopen($file2, "w") ;
                                   fwrite($file2,' ');
                                   $fff2=fopen($file2, "w") ;
                        fwrite($fff2, $k2);
                    }

حيث أن $newlinecode .. هي متغير يحوي "\r\n" .. حتى يبدأ بسطر جديد

...

والكود اللي عطيتني إياه مشكورا يعمل السورت حتى بوجود الخطأ ولكن ماياخذ بسطر كامل .. يقسمها لأجزاء بدل ماياخذها سطر سطر

هذا الناتج

2|1 1|4 2|2 1|1 2|2 1|2 2|4 1|2 5|1 1|1 6|1 1|1 6|3 1|1 1|1 1|4 1|1 1|1 1|2 1|3 1|4 1|2 4|1 1|18 4|2 1|4 4|3 1|2 4|4 1|1 5|1 1|2 5|4 1|1 about 1|1 abov 1|1 al 1|1 an 1|1 asmari 1|1 bark 1|1 behairi 1|1 by 1|1 care 1|1 cat 1|1 cate 1|1 dog 1|1 doge 1|1 done 1|1 enjoi 1|1 go 1|1 hanan 1|1 howl 1|1 java 1|1 like 1|1 lulu 1|1 month 1|1 name 1|1 on 1|1 other 1|1 project 1|1 student 1|1 swaidan 1|1 teacher 1|1 text 1|1 theheba 1|1 thi 1|1 tick 1|1 tock 1|1 walk 1|1 we 1|1 with 1|1 work 1|1

أنا احتاج انه ياخذ السطر كامل وينقله على حسب ترتيب الكلمه الموجوده فيه والتكرار يكون محسوب من قبل

ويكرر هذي العمليه عند إضافة كل ملف جديد

..

وجزاك الله خير

تم تعديل هذه المشاركة بواسطة عبقري زمانه في 1 مايو 2012 في 15:58

#13

أخوي بسام ضبط معي هذا الكود

<?php
$fileNo=1;
$file2="test.txt";
$result=""; 
$newlinecode="\r\n";
$array_word= explode($newlinecode,implode(file('main_index.txt'),$newlinecode));

asort($array_word);
$array_count= array_count_values($array_word);

foreach($array_count as $k=>$v){
 // $result.="$k $fileNo|$v\r\n".$newlinecode;
  $result.="$k\r\n".$newlinecode;

}
 $fff2=fopen($file2, "w") ;
            fwrite($fff2, " ");
           fwrite($fff2, $result);
echo $result;


?>

والحمدلله .. ضبط .. ضبط ..

مو مصدق نفسي .. واخيييييييييييييرا بعد مرور شهر يطلع هذا الحل

بس باقي الحين أحاول أضع هذا الكود في loop عشان يتكرر كل مره ينضاف فيها ملف جديد ويارب أقدر ..

ألف ألف شكـــــــــــــــــــــــــــــــر لك اخ بسام :thumb_up:

مواضيع مشابهة