איך ליצור קובץ CSV תקין בעברית בעזרת PHP

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

Medium 1,438 views

What You'll Need

  • PHP
  • CSV
  • HEBREW CSV
  • יצוא קובץ

Tips

כעקרון יש אפשרויות נוספות, העצה שלי היא שאם אתם צריכים עברית ל CSV השתשמו ב fwrite() ולא ב fputcsv. חשוב לזכור כמו שרשמתי למעלה שקובץ CSV תומך בקידוד אחד - windows-1255.

Steps

  1. 1

    Step 1

    לאחרונה נתקלתי בבעיה ליצור קובץ CSV שתומך בעברית. עברתי על רוב הפתרונות המוצעים בגוגל שכוללים בניהם שימוש ב fputcsv וכל מיני תוספים שונים. בסופו של דבר הבנתי שעדיף פשוט להשתמש ב fwrite עם מספר תוספים שמצאתי בחיפושים… חשוב: לא לשכוח להשתמש ב ()utf2heb בייצוא הקובץ. להשתמש ב fwrite ולא ב fputcsv
  2. 2

    Step 2

    replace utf8 to windows1255 (CSV Files does NOT support utf8) function utf2heb($val) { return iconv("UTF-8","WINDOWS-1255",html_entity_decode($val,ENT_COMPAT,'utf-8')); } $filename=YOUR FILE; function csv($res) { global $filename $fp = fopen($filename, 'w+b'); $str="תא 1,תא 2,תא 3\r\n"; # צריך לשים לב שמשתמשים ב \r\n ולא \n בגלל שמשתמשים ב csv. fwrite($fp,$str); foreach ($res as $line) { $str=""; foreach($line as $key=>$val) $str.="$val,"; fwrite($fp,substr($str,0,-1)."\r\n"); # הורדתי את הפסיק האחרון.... ואז צריך לרדת שורה } fclose($fp); }
  3. 3

    Step 3

    עכשיו אחרי שיצרנו את הקובץ, אפשר גם לתת את האופציה להוריד אותו בלחיצה על כפתור כלשהו….
  4. 4

    Step 4

    if (isset($_POST['submit'])) { global $filename; csv($res); $out=file_get_contents("{$filename}"); // נוציא את הקובץ למחרוזת header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Length: " . strlen($out)); // Output to browser with appropriate mime type, you choose ;) header("Content-type: text/x-csv; charset=windows-1255"); //header("Content-type: application/csv"); header("Content-Disposition: attachment; filename={$filename}"); echo utf2heb($out); // פה החלק הקריטי, צריך להשתמש ב utf2heb בכדיי להפוך את כל הטקסט ל windows-1255 exit(); }

Related Guides

How to choose and buy your website domain name

How to choose and buy your website domain name

The name of the site says everything, it must be catchy, short, concise and yet tell what is behind the business. These few easy steps will explain how to choose and buy a domain name for your website.

Easy 1K views
How to choose a logo

How to choose a logo

How your logo appears and the impression it makes will influence how easy it is to to remember your company name.

Medium 7K views
Programming in PERL (Part One)

Programming in PERL (Part One)

The purpose of the guide (s) is to give you basic knowledge so you can continue to explore the language in depth. This guide will cover the following topics: 1. Introduction - Why PERL? 2. Who needs this guide? 3. What you need to start programming? 4. Hello World!

Medium 995 views
איך ליצור פרויקט  C חדש בVisual studio 2008

איך ליצור פרויקט C חדש בVisual studio 2008

במדריך זה נסביר כיצד להתחיל פרויקט חדש בסי בעזרת ויז'ואל סטודיו 2008 - אחת מסביבות הפיתוח הנפוצות כיום בשוק. הפרויקט החדש שניצור הינו אפליקציית קונסול (דרך עבודה סטנדרטית למפתחים מתחילים בסי).

Easy 2K views
איך לשמור על אבטחת מידע בכתיבת אתר PHP

איך לשמור על אבטחת מידע בכתיבת אתר PHP

זה כואב לראות אתר שלך או של לקוח מוחרב ע"י האקרים מדריך זה יתאר איך לשמור על רמת אבטחה נאותה בכתיבה של אתרים ב- PHP

Hard 1K views
How to Fix the OpenSSL Heartbleed Bug: A Comprehensive Guide

How to Fix the OpenSSL Heartbleed Bug: A Comprehensive Guide

Learn to identify, patch, and verify fixes for the critical OpenSSL Heartbleed vulnerability. This guide covers steps for Linux, Apache, Tomcat, and other systems.

Medium 14K views