العمل مع CSV في PHP: قراءة وكتابة ومعالجة البيانات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع CSV في PHP: دليل شامل



CSV (قيم مفصولة بفواصل) — أحد أشهر التنسيقات لتبادل البيانات الجدولية. في PHP، يتم العمل مع CSV بشكل أصلي دون الحاجة لتثبيت مكتبات إضافية. في هذه المقالة، سنستعرض جميع الجوانب: من القراءة الأساسية إلى المعالجة المتقدمة للملفات الكبيرة.



الدوال الأساسية للعمل مع CSV



توفر PHP دالتين رئيسيتين للعمل مع CSV:

  • fgetcsv() — قراءة سطر CSV من ملف
  • fputcsv() — كتابة سطر بتنسيق CSV


بالإضافة إلى ذلك، تُستخدم دوال التعامل مع الملفات القياسية: fopen()، fclose()، file().



قراءة ملف CSV في PHP



أبسط طريقة لقراءة CSV هي استخدام حلقة while مع fgetcsv():



<?php$filename = 'data.csv';

if (($handle = fopen($filename, 'r')) !== false) { // قراءة الرؤوس (السطر الأول) $headers = fgetcsv($handle, 1000, ','); // قراءة باقي الأسطر while (($row = fgetcsv($handle, 1000, ',')) !== false) { echo "الاسم: " . $row[0] . ", البريد الإلكتروني: " . $row[1] . "<br>"; } fclose($handle);}?>


معاملات fgetcsv():

  • handle — مؤشر الملف
  • length — أقصى طول للسطر (الافتراضي 0 — بدون حدود)
  • separator — فاصل الحقول (الافتراضي فاصلة)
  • enclosure — رمز علامات الاقتباس (الافتراضي علامات اقتباس مزدوجة)
  • escape — رمز الهروب (الافتراضي شرطة مائلة عكسية)


قراءة CSV بفواصل مخصصة



ليست كل ملفات CSV تستخدم الفاصلة. غالبًا ما تُستخدم الفاصلة المنقوطة (;) أو علامة التبويب:



<?php$handle = fopen('data.tsv', 'r');while (($row = fgetcsv($handle, 1000, "\\t")) !== false) {    print_r($row);}fclose($handle);?>


كتابة البيانات إلى CSV



تتعامل الدالة fputcsv() تلقائيًا مع الهروب وعلامات الاقتباس:



<?php$data = [    ['إيفان', 'ivan@example.com', 25],    ['ماريا', 'maria@example.com', 30],    ['بيتر', 'petr@example.com', 28]];

$handle = fopen('users.csv', 'w');

// كتابة الرؤوسfputcsv($handle, ['الاسم', 'البريد الإلكتروني', 'العمر']);

// كتابة البياناتforeach ($data as $row) { fputcsv($handle, $row);}

fclose($handle);echo "تم إنشاء ملف CSV بنجاح!";?>


معاملات fputcsv():

  • handle — مؤشر الملف
  • fields — مصفوفة الحقول للكتابة
  • separator — فاصل الحقول
  • enclosure — رمز علامات الاقتباس
  • escape — رمز الهروب


تصدير البيانات إلى CSV للتحميل



غالبًا ما يكون مطلوبًا إنشاء CSV وتقديمه للمستخدم للتحميل:



<?php$data = [    ['المنتج', 'السعر', 'الكمية'],    ['لابتوب', 75000, 10],    ['فأرة', 1500, 50],    ['لوحة مفاتيح', 3500, 30]];

header('Content-Type: text/csv; charset=utf-8');header('Content-Disposition: attachment; filename="products.csv"');

$output = fopen('php://output', 'w');// إضافة BOM لعرض السيريلية بشكل صحيح في Excelfprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));

foreach ($data as $row) { fputcsv($output, $row);}

fclose($output);exit;?>


معالجة ملفات CSV الكبيرة



عند العمل مع الملفات الكبيرة (مئات الآلاف من الأسطر)، من المهم تجنب تحميل الملف بأكمله في الذاكرة. استخدم المعالجة التدفقية:



<?phpfunction processLargeCSV($filename, $batchSize = 1000) {    $handle = fopen($filename,                    

توصيات