در این آموزش به شما کمک می کنیم که فایل CSV را با php باز کنید. فایل CSV یا Character Separated Values یا Comma Separated Values (مقادیر جدا شده با ویرگول) یک نوع فایل با متن ساده است که محتویات آن با استفاده از کاما (,) و یا یک کاراکتر به عنوان جدا کننده ، قرار دارند . این نوع فایل ها برای ذخیره داده های ساده بسیار ساده و راحت است .
php دو تابع inbuilt (از پیش تعریف شده) خواندن فایل CSV دارد
- Fgetcsv() – خواندن فایل CSV از طریق url فایل منبع
- Str_gercsv() – خواندن داده های CSV ذخیره شده در یک متغییر
خواندن فایل CSV با php و تابع fgetcsv()
این تابع آدرس فایل CSV را به صورت اجباری در آرگومان اول قبول می کند . تابع fgetcsv() اطلاعات فایل CSV را خوانده و آن را تبدیل به یک آرایه می کند . سینتکس کلی :
1 |
fgetcsv($file_handle,$limit,$separator,$enclosure,$escape_character) |
پارامتر توضیحات
$file_handle فایل منبع CSV
$limit حداکثر طول برای خواندن یک خط از داده
$separator کاراکتر جداکننده داده های فایل CSV
$enclosure کاراکتر استفاده شده برای احاطه داده ها
$escape_character کاراکتر صرف شده هنگام خواند فایل CSV
نکته :
- اگر $file_handle دارای یک مقدار معتبر نباشد ، در این صورت مقدار بازگشتی تابع fgetcsv() ، NULL خواهد بود
- با تعریف کردن مقدار پارامتر $limit ، سرعت اجرای این تابع افزایش می باید
مثال خواندن فایل CSV با php
اول از همه ، باید یک فایل CSV بسازیم . فایل CSV که برای این مثال استفاده کردیم به اینصورت است :
fruits.csv
1 2 3 4 5 6 |
"Apple","RED","#D62433" "Orange","ORANDE","#FEB635" "Banana","YELLOW","#FEE492" "Grapes","VIOLET","#B370AD" "KIWI","GREEN","#9BA207" "Dates","BROWN","#922E2F" |
در فایل CSV بالا ، کاراکتر کاما (,) به عنوان جداکننده و دابل کئت (“) به عنوان کاراکتر احاصه کننده (enclosure) استفاده شده است.
فایل CSV بالا شامل اطلاعاتی از میوه ها است . مقادیر این فایل اسم ، رنگ و کد رنگی (hex) میوه ها است . کد خواندن فایل CSV با php به صورت زیر است .
1 2 3 4 5 6 7 8 9 10 |
<?php $CSVfp = fopen("fruits.csv", "r"); if($CSVfp !== FALSE) { while(! feof($CSVfp)) { $data = fgetcsv($CSVfp, 1000, ","); print_r($data); } } fclose($CSVfp); ?> |
در این اسکریپت ، ما تابع fgetcsv() را تا زمانی که به اخرین خط برسد تکرار و فراخوانی میکنیم .هر دفعه ، هر خط از داده را به یک آرایه تبدیل می کند.
خواندن داده رشته ای CSV با php
تابع str_getcsv() برای خواندن CSV از یک داده رشته ای به جای فایل استفاده می شود.سینتکس کلی به اینصورت است :
1 |
str_getcsv($csv_string,$separator,$enclosure,$escape_character) |
آرگومان اول برای پاس دادن داده رشته ای CSV به تابع استفاده شده است ، بقیه آرگومان ها برا همان هدف قبلی که در تابع fgetcsv() دیدیم ، به کار بردیم. در این تابع هیچ محدودیتی برای خواندن خط های رشته CSV نداریم
مثال str_getcsv()
اول از همه ، ما باید اطلاعات فایل fruits.csv را در یک متغییر ذخیره و آن را به تابع str_getcsv() پاس بدیم . و سپس ، این تابع ، به ازای هر جدا کننده فراخوانی می شود . در بین این عملیات ، هر داده جدا شده را یک فیلد جداگانه قرار می دهد .
اسکریپت php به این صورت است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $str_CSV = '"Apple","RED","#D62433" "Orange","ORANDE","#FEB635" "Banana","YELLOW","#FEE492" "Grapes","VIOLET","#B370AD" "KIWI","GREEN","#9BA207" "Dates","BROWN","#922E2F"'; $row = str_getcsv($str_CSV, "\n"); $length = count($row); for($i=0;$i<$length;$i++) { $data = str_getcsv($row[$i], ","); print_r($data); } ?> |
خروجی :
دقیقا یک خروجی یکسان برای هر دو مثال داریم .
1 2 3 4 5 6 |
Array([0] => Apple [1] => RED [2] => #D62433) Array([0] => Orange [1] => ORANDE [2] => #FEB635) Array([0] => Banana [1] => YELLOW [2] => #FEE492) Array([0] => Grapes [1] => VIOLET [2] => #B370AD) Array([0] => KIWI [1] => GREEN [2] => #9BA207) Array([0] => Dates [1] => BROWN [2] => #922E2F) |
با تکرار این آرایه ، می توانیم این داده ها به به روش های مختلف استفاده کنیم . برای مثال ، نمایش CSV در قالب یک grid یا ساختن یک دستور کوئری یا غیره …
نمایش داده های CSV در قالبت grid
ساخت کوئری با استفاده از داده های CSV
دیدید به چه راحتی است خواندن فایل CSV با php . پلاگین های مختلفی برای این کار ارایه شده است ولی شاید نمی دانستید به چه صورت این کار قابل انجام است اما الان به راحتی می توانید هر فایل CSV را بخوانید ، داده هایشان را تفکیک کنید و در شکل های مختلف نمایش و یا داخل دیتابیس ذخیره کنید .
برای دانلود اسکریپت کامل خواندن فایل CSV با php از قسمت زیر اقدام کنید
موفق و پیروز باشد.
اگر بخواهیم چند فایل csv بخونیم چیکار باید کنیم ؟
سلام. نام فایل ها رو داخل یک آرایه بزارید و بعد با یک حلقه که تابع اصلی داخلش هست همه را بخوانید