في مواجهة تحدٍ يتعلق بفلترة ملف نصي باستخدام لغة PHP، يمكننا البدء بتحليل المشكلة ووضع خطة لحلها بشكل فعّال. يتعلق الأمر بقراءة المحتوى من ملفين نصيين، ومن ثم مقارنة السجلات في الملف الأول بالسجلات الموجودة في الملف الثاني. على أساس هذه المقارنة، يتم إنشاء ملف جديد يحتوي على السجلات المتناسبة.
سنقوم بتطوير كود PHP يقوم بتحقيق هذا الهدف:
php
// قراءة محتوى الملف الأول
$file1_content = file_get_contents('file1.txt');
// قراءة محتوى الملف الثاني
$file2_content = file_get_contents('file2.txt');
// تحويل المحتوى إلى أسطر
$file1_lines = explode("\n", $file1_content);
$file2_lines = explode("\n", $file2_content);
// إنشاء مصفوفة لتخزين السجلات المتناسبة
$matching_records = array();
// فحص كل سجل في الملف الأول
foreach ($file1_lines as $line) {
// استخراج الجزء المطلوب للمقارنة
$key_to_match = substr($line, 0, 15);
// التحقق مما إذا كانت هذه القيمة موجودة في الملف الثاني
if (in_array($key_to_match, $file2_lines)) {
// إذا كانت موجودة، نخزن السجل في المصفوفة
$matching_records[] = $line;
}
}
// إنشاء محتوى جديد يحتوي على السجلات المتناسبة
$output_content = implode("\n", $matching_records);
// كتابة المحتوى الجديد إلى ملف جديد
file_put_contents('outputfile.txt', $output_content);
?>
يرجى ملاحظة أن هذا الكود يعتمد على أن الأسطر في الملفين النصيين متناسقة وتحتوي على نفس التنسيق. كما أنه يفترض أن الرقم المميز يأتي في بداية كل سجل في الملف الأول (15 حرفًا)، وهو نفس الرقم الموجود في الملف الثاني.
يمكنك تنفيذ هذا الكود على الخادم الخاص بك أو عبر بيئة PHP المحلية لديك. بعد تشغيله، يجب أن تجد ملفًا جديدًا يسمى outputfile.txt
يحتوي على السجلات المتناسبة والمحفوظة بناءً على المقارنة بين الملفين.
المزيد من المعلومات
تفضل، سأقدم المزيد من المعلومات حول الكود المقدم وكيف يقوم بتحقيق متطلباتك:
-
قراءة محتوى الملفين:
يتم استخدام دالةfile_get_contents
لقراءة محتوى الملفينfile1.txt
وfile2.txt
. هذه الدالة تقوم بقراءة الملف بأكمله كنص وتخزينه في متغيراتfile1_content
وfile2_content
. -
تحويل المحتوى إلى أسطر:
باستخدامexplode
، يتم تحويل نص الملفين إلى مصفوفات منفصلة، حيث تكون كل عنصر في المصفوفة هو سجل منفصل. -
المقارنة والتصفية:
يتم استخدام حلقةforeach
لتفحص كل سجل في الملف الأول. يتم استخراج الجزء المراد المقارنة من السجل باستخدامsubstr
، ثم يتم التحقق مما إذا كان هذا القيمة موجودة في الملف الثاني باستخدامin_array
. إذا تم العثور على تطابق، يتم حفظ السجل في مصفوفةmatching_records
. -
إنشاء محتوى جديد:
باستخدامimplode
، يتم دمج السجلات المتناسبة في مصفوفةmatching_records
لإنشاء نص جديد يحتوي على السجلات المرغوبة. -
كتابة المحتوى إلى ملف جديد:
تستخدمfile_put_contents
لكتابة المحتوى الجديد إلى ملف يحمل اسمoutputfile.txt
.
يتيح هذا الكود لك فحص ومقارنة السجلات بشكل فعّال، ويوفر لك ملفًا جديدًا يحتوي على السجلات المتناسبة والتي تم الاحتفاظ بها استنادًا إلى الملف الثاني. تأكد من أن تكون بنية الملفين متناسقة وأن الرقم المميز يظهر في نفس الموقع في كل سجل.