תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

כתיבה וקריאה של קבצים

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

fopen

הפונקציה fopen() פותחת את הקובץ ומכינה אותו לכתיבה או לקריאה, ועושה זאת באמצעות התחביר הבא:

fopen("שם הקובץ", "mode");

 

לפונקציה ()fopen שלושה מודים עיקריים:

w – לכתיבה לקובץ (write) מתחילתו.

fopen("שם הקובץ", "w");

a – כדי להוסיף לכתוב לקובץ מסופו (append).

fopen("שם הקובץ", "a");

r – כדי לקרוא.

fopen("שם הקובץ", "r");

 

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

בסוף המדריך תמצאו טבלה המתייחסת ביתר פירוט למודים שונים של fopen().

 

המשתנה $handle

ב-fopen() לא משתמשים לבד, אלא מציבים במשתנה $handle באופן הבא:

$handle = fopen("file.doc", "w");

כשהמשתנה $handle מהווה את הידית שבאמצעותה נבצע את פעולות הכתיבה והקריאה מהקובץ.

 

כתיבה לקובץ

נשתמש בידע מסעיף קודם כדי לכתוב לקובץ cars.txt. שימו לב, שבמידה והקובץ cars.txt אינו קיים, PHP ייצור אותו בעבורנו באופן אוטומטי .

$filename = "cars.txt";
// w - write
$handle = fopen($filename, "w");

 

לצורך מלאכת הכתיבה עצמה נשתמש בפונקציה fwrite(), לדוגמה:

fwrite($handle, "Audi");

 

חשוב לשבץ את הטקסט בין מירכאות כפולות על מנת ש-PHP יתחשב בתווים מיוחדים. בדוגמה השתמשנו בתו המיוחד " ", שמשמעותו בשפת ה-PHP שורה חדשה (קיצור של new line).

במידה ונרצה להוסיף ולכתוב לקובץ, נוכל לעשות זאת באותו אופן:

fwrite($handle, "BMW");
fwrite($handle, "Chevrolet");

 

ואחרי שסיימנו לכתוב לקובץ, חובה לסגור את הקובץ באמצעות הפונקציה ()fclose, באופן הבא:

fclose($handle);

עכשיו כשנלך לתיקייה נמצא שם את הקובץ cars.txt, ובתוכו מה שכתבנו:

Audi
BMW
Chevrolet

 

שימו לב, מפני שאם נחזור על פעולת הכתיבה, נגרום לשכתוב הקובץ, ולמחיקת מה שהיה כתוב בו קודם לכן. נחזור על התהליך, עם הקוד הבא, ובו דגמים שונים של מכוניות:

$filename = "cars.txt";
$handle = fopen($filename, "w");
fwrite($handle, "Sussita");
fwrite($handle, "Sufa");
fclose($handle);

זה מה שנראה בקובץ cars.txt:

Sussita
Sufa

והמסקנה היא שכתיבה לקובץ באמצעות fopen("file", "w") גורמת לשכתוב הקובץ מתחילתו, ומוחקת את כל מה שהיה כתוב בו לפני כן.

 

הוספה לקובץ

כדי להוסיף על הכתוב בקובץ נשתמש במוד  a בפונקציה fopen(). כך תראה הוספה לקובץ הקיים:

$filename = "cars.txt";
// a - append
$handle = fopen($filename, "a");
fwrite($handle, "Sabra");
fwrite($handle, "Karmel");
fclose($handle);

ועכשיו כשנפתח את הקובץ, נראה שנוספו דגמים לרשימה:

Sussita
Sufa
Sabra
Karmel

 

קריאה מהקובץ

כדי לקרוא מהקובץ נשתמש במוד-r בפונקציה fopen().

$filename = "cars.txt";
// r -read
$handle = fopen($filename, "r");

 

בנוסף, נשתמש ב-fread() לקריאת הקובץ עצמו, כשעלינו להגדיר את מספר הבייטים שצריך לקרוא מהקובץ. לדוגמה, קריאה של 3 בייטים.

$contents = fread($handle, 3); // קריאת 3 בייטים
echo $contents;
fclose($handle);

כשנריץ את הקוד, יודפס למסך: Sus.

 

במידה ונרצה לקרוא את כל מה שכתוב בקובץ נשלב בקוד את הפונקציה filesize(), שקוראת את מספר הבייטים שמכיל הקובץ.

$filename = "cars.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));// קורא כמה שצריך
echo $contents;
fclose($handle);

וכתוצאה מכך יודפס למסך:

Sussita Sufa Sabra Karmel

 

יצירת מערך מקובץ מרובה שורות

הפונקציה file() מאפשרת להפוך כל שורה בנפרד לפריט במערך. לדוגמה:

$file = file('cars.txt');
print_r($file);

ידפיס למסך:

Array (
  [0] => Sussita 
  [1] => Sufa 
  [2] => Sabra 
  [3] => Karmel 
)

 

קריאה מהקובץ באמצעות לולאה

כפי שניתן לקרוא את הקובץ לתוך מערך, ניתן לקרוא כל שורה בנפרד באמצעות לולאה.

הקריאה מהקובץ תעשה באמצעות לולאת while שרצה עד לסוף הקובץ. הלולאה יודעת שהיא הגיעה לסוף הקובץ באמצעות הפונקציה feof() קיצור של End Of File, והקריאה של כל שורה בנפרד אפשרית באמצעות הפונקציה fgets(), שקוראת בכל פעם שורה אחת מהקובץ.

 

$filename = "cars.txt";
$handle = fopen($filename, "r");
$contents = "<ul>";
// End Of File<
while (!feof($handle)) {
  $contents .= "<li>" . fgets($handle) . "</li >"; // מחזיר שורה מקובץ פתוח
}
$contents . "</ul>"; echo $contents; fclose($handle);

והתוצאה בהתאם:

Sussita
Sufa
Sabra
Karmel

 

המודים של fopen()

mode קריאה/כתיבה מיקום המצביע האם מוחק? האם יוצר קובץ?
'r' קריאה בלבד תחילת הקובץ לא לא
'r+' קריאה וכתיבה תחילת הקובץ לא לא
'w' כתיבה בלבד תחילת הקובץ כן כן
'w+' קריאה וכתיבה תחילת הקובץ כן כן
'a' כתיבה בלבד סוף הקובץ לא כן
'a+' קריאה וכתיבה סוף הקובץ לא כן

 

כל מדריכי ה-PHP

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.

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

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

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

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

דג למים הוא כמו ציפור ל...?

 

תמונת המגיב

ג'ו בתאריך: 04.05.2014

מעולה! ממש מעולה. לשם מה אתה משקיעים כל כך? המדריך הטוב ביותר שראיתי

תמונת המגיב

מאוריציו בתאריך: 10.12.2018

מה לעשות כדי שהקובץ שאני יוצר או מוסיף לו נתונים יהיה בעברית?

תמונת המגיב

יעקב בתאריך: 21.01.2023

היי, יש אפשרויות נוספות של כתיבה וקריאה של קבצים כי לא הצלחתי עם הקוד במדריך?