شرح صفوف ومحتوى الفقرة
على عكس الدالة البسيطة explode(",", $line)، تحلل الدالة fgetcsv() الحقول المحاطة بعلامات تنصيص بدقة حتى لو احتوت بداخلها على فواصل أو علامات تنصيص مزدوجة.
- في PHP 8.4+ مرّر دائماً نصاً فارغاً للمعامل
escape: ""(أو المعامل الخامس"") لتعطيل الهروب القديم بالشرطة العكسية وتجنب تنبيهات الإلغاء. - اقرأ الصف الأول قبل الحلقة إذا كان ملف CSV يبدأ بسطر أسماء الأعمدة، ثم اربطه بكل صف بيانات عبر
array_combine(). - تُرجع
fgetcsv()مصفوفة مفهرسة بحقول كل صف، وتُرجعfalseعند وصول المؤشر إلى نهاية الملف.
تمرير "" كمعامل خامس يتوافق مع معيار RFC 4180 في PHP 8.4 ويحافظ على الفاصلة الموجودة داخل الحقل "Jeddah, SA".
PHP
<?php
$fp = fopen('php://memory', 'r+');
fwrite($fp, "id,name,city\n10,\"Noura\",\"Jeddah, SA\"\n");
rewind($fp);
$cols = fgetcsv($fp, 0, ',', '"', '');
$row = fgetcsv($fp, 0, ',', '"', '');
$record = array_combine($cols, $row);
echo $record['name'] . " -> " . $record['city'] . "\n";
fclose($fp);