כתיבה וקריאה של קבצים
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+' | קריאה וכתיבה | סוף הקובץ | לא | כן |
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.