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

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

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

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

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

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

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

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

 

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

 

= 9 + 8

תמונת המגיב

ג'ו בתאריך: 04.05.2014

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