נגישות       נגישות
שינוי גודל טקסט:
א א א
שינוי צבעי האתר:
? מקשי קיצור:

לחיצה חוזרת ונשנית על המקש Tab תעביר אתכם בין הקישורים והאזורים השונים בעמוד.

הפעלת מקשי הקיצור תלויה בדפדפן שבו אתם משתמשים.

Internet Explorer, Chrome ובגרסאות ישנות של Firefox: לחצו על מקש Alt ועל מקש המספר או האות על-פי הרשימה. ב Firefox 3 ומעלה: לחצו על המקשים Alt + Shift + המספר או האות.

S - עבור לתוכן הדף
L - חיפוש
1- עמוד הבית
2 - פרוייקטים
3 - מדריכים
4 - אודות
5 - צרו קשר
6 - הצהרת נגישות
 

כיצד לטפל בקובץ csv באמצעות php?

מחבר:
בתאריך:

במדריך קודם למדנו כיצד להעלות קבצים לשרת , ובמדריך זה נסביר כיצד PHP יכול לטפל בקבצי CSV. אם תדעו כיצד לטפל בקבצי CSV תוכלו, לדוגמה, להעלות קבצי excel שלמים למסד הנתונים, ולהשתמש בהם בדרכים הרבות והשונות שמאפשר PHP.

במדריך זה נלמד:

  1. להסב קבצי Excel לקבציי CSV
  2. לטפל בקבצי CSV באמצעות PHP

הסבת קבצי Excel לקבציי CSV

לצורך הדוגמה, נתחיל מקובץ excel רגיל שכולל את שמם של ראשי הרשויות בישראל במספר ערים נבחרות. הקובץ כולל את שמו של האזור (צפון, מרכז, דרום), את שם הרשות (חיפה, תל אביב, ירושלים) ואת שם ראש הראשות (יונה יהב, רון חולדאי, ניר ברקת וכיו"ב).

כך נראה קובץ האקסל המקורי:

מראה קובץ האקסל מבפנים

כדי להסב את המסמך ל-CSV, נשמור את הקובץ בשם:

כיצד לשמור קובץ excel כקובץ csv

ונבחר בסוג CSV(Comma delimited):

שמירה כסוג csv

התוצאה היא קובץ CSV, כשהשדות בכל שורה מופרדים עכשיו בפסיקים. כך זה נראה בעורך טקסט דוגמת notepad++:

מראה קובץ csv לדוגמה

שימו לב שאם הקובץ בעברית מוטב לשמור אותו בקידוד UTF-8, כדי שלא יתחרבש בעיבוד בהמשך.

אתם מוזמנים להוריד את קובץ ה-csv הבא כדי שישמש אתכם בהמשך המדריך.

להורדה

 

טיפול בקבצי CSV באמצעות PHP

הפונקציה שמטפלת בקובץ ה-csv, היא fgetcsv, שזה התחביר שלה:

fgetcsv("file_name", 1000, "," );

  • file_name – הוא שם הקובץ. לדוגמה, regions.csv
  • 1000 – מספר התווים בשורה הארוכה ביותר (לא הכרחי)
  • "," – התו המפריד בין הפריטים (לא הכרחי)

כדי להשתמש ב-fgetcsv ביעילות צריך לשלב קוד שלמדנו שפותח את הקובץ בתחילת הקוד באמצעות fopen, וסוגר את הקובץ בסוף הקוד באמצעות fclose. כשבין לבין, רצה לולאה שהופכת כל שורה בנפרד למערך.

זה הקוד:

פתיחת הקובץ לקריאה באמצעות fopen(), כמו שראינו במדריך טיפול בקבצים.

$handle = fopen("filename.csv", "r");

קריאת שורה-שורה מהקובץ באמצעות fgetcsv(), והפיכת כל שורה בנפרד למערך ($data).

fgetcsv($handle, 1000, ",");

כולל את ה-$handle, שיצרנו בסעיף קודם, 1000 מייצג< את מספר התווים המקסימלי בכל שדה בנפרד, ו-"," מציין שהשדות מופרדים בפסיקים.
כדי שהקריאה תתבצע מכל השורות, צריך להריץ בתוך לולאה.

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  // Do something.
}

סגירת הקובץ הפתוח.

fclose($handle);

בואו נשלב את שלושת השלבים, לקוד מלא:

<?php
// פתיחת הקובץ
if (($handle = fopen("mayors.csv", "r")) !== FALSE) {
 
  // הפיכת כל שורה בנפרד למערך, כשהפריטים מופרדים בפסיק
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
 
    // Do something.
 
  }
  // סגירת הקובץ
  fclose($handle);
}

 

הפיכת קובץ ה-CSV למערך מקונן

מטרת הקוד הבא לייצר מערך מקונן ($the_big_array), שהמערכים שמקוננים בתוכו עשויים כל אחד מאחת השורות בקובץ ה-CSV.

<?php
// שם הקובץ
$filename = 'mayors.csv';
 
// המערך שכולל את כל המערכים
$the_big_array = array();
 
// פותח את הקובץ וקורא את תכולתו
if (($handle = fopen("{$filename}", "r")) !== FALSE) {
 
  //כל שורה בקובץ הופכת למערך $data
  // פריטי המערך מופרדים בפסיק
  while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    // כל מערך בנפרד נוסף למערך הגדול
    $the_big_array[] = $data;
  }
  // סוגרים את הקובץ
  fclose($handle);
  }
// כותבים את המערך למסך
echo "<pre>";
print_r($the_big_array);
echo "</pre>";
 
?>

וכך נראה המערך שיצרנו מקובץ ה-CSV:

Array
(
  [0] => Array
    (
      [0] => איזור
      [1] => שם היישוב
      [2] => ראש היישוב
    )
 
  [1] => Array
    (
      [0] => מרכז
      [1] => תל אביב
      [2] => רון חולדאי
    )
 
  [2] => Array
    (
      [0] => מרכז
      [1] => בת ים
      [2] => שלמה לחיאני
    )
 
  [3] => Array
    (
      [0] => מרכז
      [1] => חולון
      [2] => מוטי ששון
    )
 
  [4] => Array
    (
      [0] => ירושלים
      [1] => ירושלים
      [2] => ניר ברקת
    )
 
  [5] => Array
    (
      [0] => צפון
      [1] => חיפה
      [2] => יונה יהב
    )
 
  [6] => Array
    (
      [0] => דרום
      [1] => באר שבע
      [2] => ראובן דנילוביץ
    )
 
)

 

לכל מדריכי ה-PHP

 

 

הוסף תגובה חדשה

 

= 8 + 8

תמונת המגיב

אמיר סימן טוב בתאריך: 20.10.2013

פוסט מפורט ומודגם נפלא! תודה יוסי!

תמונת המגיב

מתן בתאריך: 12.01.2017

תודה על המדריך המפורט.
עשיתי את כל מה שאמרת ועדיין העברית יוצאת לי מחורבשת. מה עושים?

תמונת המגיב

יוסי בן הרוש בתאריך: 12.01.2017

שלום, מתן.
קודם כל הייתי בודק שהקידוד הוא utf-8.
אם למרות הכול עדיין לא עובד,
אז כדאי להשתמש בספריות קוד ותיקות
ויציבות דוגמת PHP-EXCEL, ודומיו.

תמונת המגיב

נתן בתאריך: 20.01.2017

האם יש דרך לעבוד עם קבצי אקסל ישירות במקום עם csv?

תמונת המגיב

יוסי בן הרוש בתאריך: 20.01.2017

בשביל אקסל צריך להעזר בספריות
קוד דוגמת PHP-excel,
וראיתי עוד כמה פרויקטים מהסוג הזה.
באופן כללי, מטרת המדריכים היא
להסביר את עקרונות העבודה עם PHP
באמצעות המקרים הפשוטים ביותר,
ואם רוצים פתרון בוגר ויציב,
שמתאים ליותר מקרים,
אז הייתי ממליץ להשתמש בספריות קוד.