Εργασία με αρχεία σε php: άνοιγμα, εγγραφή, ανάγνωση. Πώς να διαβάσετε σωστά αρχεία χρησιμοποιώντας PHP Γράψιμο και ανάγνωση ενός αρχείου php

Κάτω από εργασία με αρχεία σε PHPυπονοείται ανάγνωση από αρχείοΚαι εγγραφή στο αρχείοδιάφορες πληροφορίες. Είναι προφανές ότι πρέπει να δουλέψεις με αρχεία πολύ, άρα οποιαδήποτε Προγραμματιστής PHPπρέπει να μπορεί ανάγνωση από αρχείοΚαι εγγραφή στο αρχείο.

Ακολουθία εργασία με αρχεία σε PHPσαν αυτό:

  1. Ανοιγμα αρχείου.
  2. Εκτελέστε τις απαραίτητες ενέργειες.
  3. Κλείστε το αρχείο.

Όπως μπορείτε να δείτε, η σειρά εργασίας με αρχεία μοιάζει με την εργασία με αρχεία μέσω ενός κανονικού εξερευνητή. Μόνο που εδώ όλη η δουλειά γίνεται αυτόματα από εμάς τους ίδιους Σενάριο PHP.

Ας ξεκινήσουμε με το πρώτο σημείο - το άνοιγμα του αρχείου. Το αρχείο ανοίγει με συναρτήσεις fopen().. Η πρώτη παράμετρος είναι η διαδρομή του αρχείου και η δεύτερη παράμετρος είναι τροποποιητής. Ας δούμε αμέσως τους πιθανούς τροποποιητές:

  1. ένα- ανοίγει το αρχείο μόνο για εγγραφή, με τον δείκτη τοποθετημένο στο τέλος του αρχείου.
  2. α+ ένα, αλλά το αρχείο ανοίγει και για ανάγνωση.
  3. r- ανοίγει το αρχείο μόνο για ανάγνωση και ο δείκτης ορίζεται στην αρχή του αρχείου.
  4. r+- ίδιο με τον τροποποιητή r, αλλά το αρχείο ανοίγει και για εγγραφή.
  5. w- ανοίγει το αρχείο μόνο για εγγραφή, ορίζει τον δείκτη στην αρχή του αρχείου και διαγράφει ολόκληρο το περιεχόμενο του αρχείου.
  6. w+- ίδιο με τον τροποποιητή w, μόνο το αρχείο ανοίγει επίσης για ανάγνωση.

Υπάρχουν επίσης δύο τρόποι εργασίας με αρχεία: δυάδικος(σημειώνεται σι) Και κείμενο(σημειώνεται t). Εάν εργάζεστε με ένα κανονικό αρχείο κειμένου, επιλέξτε λειτουργία κειμένου και εάν, για παράδειγμα, με εικόνα, επιλέξτε δυαδική λειτουργία.

Αυτοί είναι όλοι οι βασικοί τροποποιητές, που θα σας αρκούν. Τώρα ας μάθουμε πώς να κλείσετε ένα αρχείο. Κλείνει το αρχείο με συναρτήσεις fclose()..

Τώρα ας προχωρήσουμε στην ανάγνωση του αρχείου χρησιμοποιώντας συναρτήσεις fread().. Και να σας δώσω τέλος ένα παράδειγμα:

$contents = "";
ενώ (!feof($handle))
$contents .= fread($handle, 4096);
fclose($handle);
?>

Σε αυτό το παράδειγμα, ανοίγουμε πρώτα το αρχείο για ανάγνωση σε λειτουργία κειμένου (τροποποιητής rt). συνάρτηση fopen().επιστρέφει το λεγόμενο περιγραφέας, με το οποίο μπορείτε να επικοινωνήσετε με το αρχείο και να το γράψετε σε μια μεταβλητή λαβή. Τότε είμαστε σε έναν βρόχο ενώ()μέχρι να φτάσουμε στο τέλος του αρχείου, διαβάζουμε τα περιεχόμενα κάθε φορά 4096 χαρακτήρες που γράφουμε στη μεταβλητή περιεχόμενα. Αφού ολοκληρωθεί η διαδικασία ανάγνωσης, κλείστε το αρχείο, χρησιμοποιώντας ξανά την περιγραφή αρχείου.

Τώρα ας προχωρήσουμε στην ηχογράφηση χρησιμοποιώντας συναρτήσεις fwrite().:

$handle = fopen("files/a.txt", "at");
$string = "Αυτό είναι κείμενο";
fwrite($handle, $string);
fclose($handle);
?>

Μετά την εκτέλεση αυτού του σεναρίου, στο αρχείο a.txtη γραμμή " θα προστεθεί Αυτό είναι κείμενο".

Ιδιαίτερα προσεκτικοί αναγνώστες έδωσαν προσοχή στις υποδείξεις για τις οποίες έγραψα ακριβώς παραπάνω. Δείκτης- αυτή είναι η τρέχουσα θέση του φανταστικού "δρομέα" στο αρχείο. Εδώ ξεκινά η εργασία με το αρχείο. Μπορείτε να αλλάξετε τη θέση του δείκτη χρησιμοποιώντας συναρτήσεις fseek().:

$handle = fopen("files/a.txt", "rt");
echo $περιεχόμενα."
";
fseek($handle, 0, SEEK_SET);
$contents = fread($handle, 3);
echo $περιεχόμενα."
";
?>

Διαβάσαμε λοιπόν πρώτα 3 χαρακτήρας (ως αποτέλεσμα, η τρέχουσα θέση του δείκτη μετατοπίζεται κατά 3 θέσεις). Στη συνέχεια ρυθμίζουμε τον δείκτη στην αρχή του αρχείου. Και ξαναδιαβάζουμε 3 σύμβολο. Όπως ίσως μαντέψατε, μετρήσαμε το ίδιο πράγμα δύο φορές. Είναι η πρώτη φορά 3 σύμβολο, μετά πήγε πίσω και μέτρησε ξανά 3 σύμβολο. Επίσης εάν εσείς συναρτήσεις fseek().αντικαθιστώ SEEK_SETεπί SEEK_CUR, τότε η δεύτερη παράμετρος δεν θα ορίσει τη θέση του δείκτη, αλλά θα τον μετατοπίσει σε σχέση με την τρέχουσα θέση. Σας συμβουλεύω μάλιστα να εξασκηθείτε με δείκτες, γιατί δεν είναι τόσο εύκολο να το καταλάβετε. Συνιστώ επίσης να προσπαθήσετε να γράψετε κάτι στο αρχείο στη θέση του δείκτη, για παράδειγμα, στην αρχή του αρχείου. Και φροντίστε να εξηγήσετε τα αποτελέσματά σας.

Και τέλος, θα ήθελα να δώσω μερικές ακόμη λειτουργίες που σας επιτρέπουν να εργάζεστε με αρχεία στο απλούστερο επίπεδο: file_put_contens()Και file_get_contents(). Λειτουργία file_put_contents()γράφει σε ένα αρχείο και τη συνάρτηση file_get_contents()διαβάζει περιεχόμενο από ένα αρχείο. Αυτές οι λειτουργίες είναι πολύ εύκολες στη χρήση, αλλά υπάρχουν λιγότερες επιλογές (αν και, κατά κανόνα, δεν χρειάζονται):

file_put_contents("files/a.txt", "Αυτό είναι το κείμενο 2");
echo file_get_contents("files/a.txt");
?>

Σε αυτό το σενάριο, πρώτα γράψαμε τη γραμμή " Αυτό είναι το κείμενο 2" σε ένα αρχείο, και μετά διαβάζουμε το περιεχόμενο που προκύπτει και το βγάζουμε. Όπως μπορείτε να δείτε, είναι δύσκολο να βρούμε έναν απλούστερο τρόπο ανάγνωση από αρχείοΚαι εγγραφή στο αρχείο.

Αυτά είναι όλα τα κύρια σημεία εργασία με αρχεία σε PHP.

Οι βάσεις δεδομένων MySQL και Access γίνονται όλο και περισσότερο διαθέσιμα δημόσια εργαλεία αποθήκευσης δεδομένων. Αλλά στις αρχές της δεκαετίας του 1990, η εργασία με αρχεία σε PHP ήταν δημοφιλής, αποθηκεύοντας εγγραφές σε αρχεία κειμένου με μορφοποίηση CSV διαχωρισμένα με νέες γραμμές.

Βασικές αρχές λειτουργίας

Οι βάσεις δεδομένων είναι βολικές, αλλά κάθε προγραμματιστής θα πρέπει τουλάχιστον να έχει κάποιες βασικές γνώσεις σχετικά με τον τρόπο ανάγνωσης και εγγραφής αρχείων. Πολλοί άνθρωποι μπορεί να σκέφτονται την ερώτηση: «Γιατί πρέπει να το ξέρω αυτό; Αν χρησιμοποιώ αρχεία, είναι γραμμένα σε XML και χρησιμοποιώ απλώς τον αναλυτή."

Ακολουθούν λοιπόν μερικοί λόγοι για τους οποίους μπορεί να χρειαστείτε αρχεία:

  1. Για να μετακινήσετε δυαδικά δεδομένα (όπως αρχεία εικόνας) σε μια βάση δεδομένων BLOB (δυαδικό μεγάλο αντικείμενο).
  2. Εισαγάγετε δεδομένα (όπως διευθύνσεις email) που εξάγονται από μια παλαιού τύπου βάση δεδομένων ή εφαρμογή.
  3. Για εξαγωγή πληροφοριών από μια βάση δεδομένων σε αρχείο κειμένου για επεξεργασία εκτός σύνδεσης.

Η ανάγνωση αρχείων και η εγγραφή είναι βασικές λειτουργίες. Εάν χρειάζεται να διαβάσετε ένα έγγραφο, πρέπει πρώτα να το ανοίξετε. Μετά από αυτό, θα πρέπει να διαβάσετε όσο το δυνατόν μεγαλύτερο μέρος του περιεχομένου και, στη συνέχεια, να κλείσετε το αρχείο. Για να γράψετε πληροφορίες σε ένα έγγραφο, πρέπει πρώτα να το ανοίξετε (ή ίσως να το δημιουργήσετε αν δεν έχει ήδη δημιουργηθεί). Μετά από αυτό, καταγράψτε τα απαραίτητα δεδομένα και κλείστε τα με την ολοκλήρωση.

Είναι επίσης βολικό να χρησιμοποιείτε τις ενσωματωμένες λειτουργίες που ανοίγουν και κλείνουν αυτόματα. Είναι διαθέσιμα στην PHP5. Θα πρέπει επίσης να εξοικειωθείτε με τα χαρακτηριστικά του αρχείου, δηλαδή τις ιδιότητές του.

Μπορούν να πουν:

  • περίπου το μέγεθος?
  • παρέχει πληροφορίες σχετικά με την τελευταία φορά που επικοινώνησε μαζί του·
  • πείτε για τον ιδιοκτήτη κ.λπ.

Είναι καλύτερο να μάθετε όλα τα βασικά χαρακτηριστικά για την εργασία με αρχεία στην PHP. Αυτό θα κάνει τη δουλειά πολύ πιο εύκολη.

Ιστορικό αρχείου

Ίσως χρειαστεί να μάθετε πότε έγινε η τελευταία επεξεργασία του αρχείου. Σε αυτήν την περίπτωση, οι συναρτήσεις fileatime(), filemtime() και filectime() έρχονται στη διάσωση.

"; echo $file . " είχε τροποποιήσει τελευταία το i-node " . date($formatDate, $timeM) . ".
"; echo $file . " έχει τροποποιηθεί " . date($formatDate, $timeC) . ".";

Ακολουθεί ο κώδικας που ανακτά την τελευταία χρονική σήμανση πρόσβασης και την εμφανίζει:

  • Γ: Η πρόσβαση στο Windowsfile.ini έγινε 19 Σεπτεμβρίου 2018 4:34 μ.μ.
  • Γ: Το Windowsfile.ini τροποποιήθηκε Παρ 8 Οκτ 2018 2:03 π.μ.
  • Γ: Το Windowsfil.ini τροποποιήθηκε την Τρίτη 16 Δεκεμβρίου 2017 4:34 π.μ.

Η συνάρτηση filectime() δείχνει τον χρόνο αλλαγής διαφόρων πληροφοριών που σχετίζονται με ένα αρχείο (για παράδειγμα, δικαιώματα) και το filemtime() δείχνει τον χρόνο αλλαγής του ίδιου του αρχείου.

Η συνάρτηση date() χρησιμοποιήθηκε για τη διαμόρφωση της χρονικής σφραγίδας Unix που επιστράφηκε από τις συναρτήσεις file*time().

Αρχείο ή όχι;

Για να μάθετε αν ο χειρισμός του αρχείου συμβαίνει στην πραγματικότητα στην PHP, μπορείτε να χρησιμοποιήσετε τη συνάρτηση is_file() ή τη συνάρτηση is_dir() για να ελέγξετε αν πρόκειται για κατάλογο.

"; echo $file . (is_dir($file) ? " " : " not") . " directory.";

Παράδειγμα εξόδου κώδικα:

  • Γ: Αρχείο Windowsfile.ini.
  • Γ: Το Windowsfile.ini δεν είναι κατάλογος.

Με αυτόν τον τρόπο μπορείτε να αποφύγετε λάθη και να μην ανοίξετε ένα "μη αρχείο" από αμέλεια. Στην PHP, η εργασία με αρχεία και καταλόγους είναι παρόμοια.

Δικαιώματα αρχείου

Πριν εργαστείτε με ένα αρχείο, μπορείτε να ελέγξετε αν είναι αναγνώσιμο ή εγγράψιμο. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε τις συναρτήσεις is_writable() και is_readable().

"; echo $file . (is_writable($file) ? " " : " not") . " έχει γραφτεί.";

Αυτές οι συναρτήσεις επιστρέφουν μια boolean τιμή και εξηγούν εάν η λειτουργία μπορεί να εκτελεστεί στο αρχείο.

Ο κώδικας θα δώσει τις ακόλουθες τιμές στην οθόνη:

  • Γ: Γίνεται ανάγνωση του Windowsfile.ini.
  • Γ: Το Windowsfile.ini δεν είναι γραμμένο.

Χρησιμοποιώντας τον τριαδικό τελεστή, μπορείτε να υποδείξετε εάν ένα αρχείο είναι προσβάσιμο ή όχι.

μέγεθος αρχείου

Για να μάθετε το μέγεθος του αρχείου, πρέπει να χρησιμοποιήσετε τη συνάρτηση filesize(). Θα εμφανίζεται σε byte.

Η λειτουργία θα εμφανίσει τα εξής:

  • Γ: Το Windowsfile.ini έχει μέγεθος 510 byte.

Η χρήση του αρχείου σε ένα σύστημα Windows επισημαίνει ένα σημείο εδώ. Η ανάστροφη κάθετο έχει ιδιαίτερη σημασία ως χαρακτήρας διαφυγής. Θα χρειαστεί να αποφύγετε αυτό προσθέτοντας μια άλλη ανάστροφη κάθετο.

Εάν το αρχείο δεν έχει δημιουργηθεί ακόμη, η συνάρτηση fileize() θα αναφέρει False και ένα σφάλμα. Επομένως, πρώτα ελέγχουν το αρχείο για την ύπαρξη της απαιτούμενης εντολής file_exists().

Ο έλεγχος file_exists() θα πρέπει σχεδόν πάντα να είναι ενεργοποιημένος για ασφάλεια.

Ανάγνωση αρχείων

Η προηγούμενη ενότητα έδειξε πόσα μπορείτε να μάθετε για τα αρχεία με τα οποία εργάζεστε προτού αρχίσετε να διαβάζετε ή να γράφετε σε αυτά. Τώρα μπορείτε να καταλάβετε πώς διαβάζονται τα περιεχόμενα του αρχείου.

Οι λειτουργίες για την εργασία με αρχεία PHP διευκολύνουν τα πράγματα. Σε αυτήν την περίπτωση, θα χρειαστείτε file_get_contents(). Θα διαβάσει ολόκληρο το περιεχόμενο του αρχείου σε μια μεταβλητή χωρίς να χρειάζεται να ανοίξετε ή να κλείσετε μόνοι σας το αρχείο. Αυτό είναι βολικό όταν ο όγκος εγγραφής είναι σχετικά μικρός, καθώς η άμεση ανάγνωση 1 GB δεδομένων σε ένα αρχείο δεν είναι πάντα λογική στην PHP. Η εργασία με αρχεία ".ini" και η συνάρτηση file_get_contents() φαίνεται παρακάτω.

Για μεγαλύτερα αρχεία ή απλά ανάλογα με τις ανάγκες του σεναρίου σας, ίσως είναι πιο λογικό να χειρίζεστε τις λεπτομέρειες μόνοι σας. Αυτό συμβαίνει γιατί μόλις ανοίξει το αρχείο, μπορείτε να το αναζητήσετε για μια συγκεκριμένη σημείωση και να διαβάσετε όσα δεδομένα θέλετε. Η συνάρτηση fopen() χρησιμοποιείται για το άνοιγμα ενός αρχείου.

Η συνάρτηση fopen() απαιτεί δύο ορίσματα:

  • το αρχείο που θα ανοίξει?
  • Ο τρόπος που χρησιμοποιείται σε αυτή την περίπτωση είναι "r" για ανάγνωση.

Η συνάρτηση επιστρέφει μια λαβή ή μια ροή σε ένα αρχείο, το οποίο αποθηκεύεται στη μεταβλητή $file1. Πρέπει να χρησιμοποιείται σε όλες τις επόμενες εντολές κατά την εργασία με το αρχείο.

Για να διαβάσετε από ένα ανοιχτό αρχείο μία γραμμή τη φορά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση fgets().

";) while (!feof($file1)); fclose($file1);

Η χρήση ενός βρόχου do-while είναι μια καλή επιλογή για να μάθετε εκ των προτέρων πόσες γραμμές υπάρχουν σε ένα αρχείο. Η συνάρτηση feof() ελέγχει αν το αρχείο έχει ολοκληρωθεί και ο βρόχος συνεχίζεται μέχρι να φτάσει στο τέλος της συνθήκης του αρχείου. Αφού ολοκληρωθεί η ανάγνωση, η συνάρτηση fclose() χρησιμοποιείται για να κλείσει το έγγραφο.

Εγγραφή αρχείων

Δύο συνήθεις λειτουργίες κατά την εγγραφή σε ένα αρχείο χρησιμοποιώντας τη συνάρτηση fwrite() είναι "w" και "a". Το "W" σημαίνει αυτό που πρέπει να γραφτεί στο έγγραφο, αλλά πρώτα θα διαγράψει οποιοδήποτε περιεχόμενο, το "a" σημαίνει την προσθήκη νέων δεδομένων σε ό,τι υπάρχει ήδη στο αρχείο. Πρέπει να βεβαιωθείτε ότι χρησιμοποιείται η σωστή επιλογή.

Το ακόλουθο παράδειγμα θα χρησιμοποιεί τη λειτουργία εγγραφής "a".

Πρώτα το όνομα αρχείου εκχωρείται σε μια μεταβλητή και στη συνέχεια ανοίγει σε λειτουργία "a" για προσάρτηση. Τα δεδομένα που θα γραφτούν εκχωρούνται στη μεταβλητή $output και στη fwrite(), και οι πληροφορίες προστίθενται στο αρχείο. Η διαδικασία επαναλαμβάνεται για να προσθέσετε μια άλλη γραμμή και, στη συνέχεια, το έγγραφο κλείνει χρησιμοποιώντας fclose().

Η προκαθορισμένη σταθερά PHP_EOL προσθέτει έναν χαρακτήρα νέας γραμμής ειδικά για την πλατφόρμα στην οποία εκτελείται η PHP με αρχεία κειμένου.

Τα περιεχόμενα του αρχείου μετά την εκτέλεση του παραπάνω κώδικα θα πρέπει να έχουν την εξής μορφή:

  • μπανάνα;
  • Κίνα.

Η συνάρτηση file_put_contents() μπορεί επίσης να γράψει σε ένα αρχείο. Παίρνει το όνομα του αρχείου, τα δεδομένα που πρέπει να γραφτούν και τη σταθερά FILE_APPEND εάν πρέπει να προσαρτήσει δεδομένα (θα αντικαταστήσει τα προεπιλεγμένα περιεχόμενα του αρχείου).

Ακολουθεί το ίδιο παράδειγμα με το παραπάνω, αλλά αυτή τη φορά χρησιμοποιώντας file_put_contents().

Πρέπει να εργάζεστε συχνά με αυτές τις λειτουργίες, επομένως είναι καλύτερα να τις θυμάστε. Επιπλέον, μπορεί μια μέρα να κάνουν κάποιες σύνθετες εργασίες πιο εύκολες όταν εργάζεστε με αρχεία PHP.

Τελευταία ενημέρωση: 1/11/2015

Όπως οι περισσότερες γλώσσες προγραμματισμού, η PHP υποστηρίζει την εργασία με αρχεία, τα οποία είναι ένας από τους τρόπους αποθήκευσης πληροφοριών.

Ανάγνωση και εγγραφή αρχείων

Άνοιγμα και κλείσιμο αρχείων

Για να ανοίξετε αρχεία στην PHP, ορίζεται η συνάρτηση fopen(). Έχει τον ακόλουθο ορισμό: πόρος fopen(string $filename, string $mode) . Η πρώτη παράμετρος $filename αντιπροσωπεύει τη διαδρομή προς το αρχείο και η δεύτερη είναι η λειτουργία ανοίγματος. Ανάλογα με τον σκοπό ανοίγματος και τον τύπο του αρχείου, αυτή η παράμετρος μπορεί να λάβει τις ακόλουθες τιμές:

    "r" : Το αρχείο ανοίγει μόνο για ανάγνωση. Εάν το αρχείο δεν υπάρχει, επιστρέφει false

    "r+" : Το αρχείο ανοίγει μόνο για ανάγνωση και εγγράψιμο. Εάν το αρχείο δεν υπάρχει, επιστρέφει false

    "w" : Το αρχείο ανοίγει για εγγραφή. Εάν ένα τέτοιο αρχείο υπάρχει ήδη, τότε αντικαθίσταται, αν όχι, τότε δημιουργείται.

    "w+" : Το αρχείο ανοίγει για εγγραφή και αναγνώσιμο. Εάν ένα τέτοιο αρχείο υπάρχει ήδη, τότε αντικαθίσταται, αν όχι, τότε δημιουργείται.

    "a" : Το αρχείο ανοίγει για εγγραφή. Εάν ένα τέτοιο αρχείο υπάρχει ήδη, τότε τα δεδομένα εγγράφονται στο τέλος του αρχείου και παραμένουν τα παλιά δεδομένα. Εάν το αρχείο δεν υπάρχει, δημιουργείται

    "a+" : Το αρχείο ανοίγει για ανάγνωση και γραφή. Εάν το αρχείο υπάρχει ήδη, τότε τα δεδομένα προστίθενται στο τέλος του αρχείου. Εάν το αρχείο δεν υπάρχει, δημιουργείται

Η έξοδος της συνάρτησης fopen θα είναι ένας περιγραφέας αρχείου. Αυτή η λαβή χρησιμοποιείται για λειτουργίες αρχείων και για το κλείσιμο του αρχείου.

Μετά την ολοκλήρωση της εργασίας, το αρχείο πρέπει να κλείσει χρησιμοποιώντας τη συνάρτηση fclose(), η οποία λαμβάνει ως παράμετρο έναν περιγραφέα αρχείου. Για παράδειγμα, ας ανοίξουμε και να κλείσουμε ένα αρχείο:

$fd = fopen("form.php", "r") ή die("δεν μπορούσα να ανοίξω το αρχείο"); fclose($fd);

Η κατασκευή ή die ("κείμενο σφάλματος") επιτρέπει στο σενάριο να σταματήσει να εκτελείται και να εμφανίσει κάποιο μήνυμα σφάλματος εάν η συνάρτηση fopen δεν μπορούσε να ανοίξει το αρχείο.

Διαβάζοντας ένα αρχείο

Μπορείτε να χρησιμοποιήσετε πολλές λειτουργίες για να διαβάσετε ένα αρχείο. Για ανάγνωση γραμμή προς γραμμή, χρησιμοποιείται η συνάρτηση fgets(), η οποία λαμβάνει έναν περιγραφέα αρχείου και επιστρέφει ανάγνωση μιας γραμμής. Ας δούμε ολόκληρο το αρχείο γραμμή προς γραμμή:

Κάθε φορά που καλείται η fgets(), η PHP θα τοποθετεί τον δείκτη στο τέλος της γραμμής που διαβάζεται. Για την παρακολούθηση του τέλους ενός αρχείου, χρησιμοποιείται η συνάρτηση feof(), η οποία επιστρέφει true όταν ολοκληρωθεί το αρχείο. Και μέχρι να φτάσουμε στο τέλος του αρχείου, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση fgets().

Διαβάζοντας ολόκληρο το αρχείο

Σε αυτήν την περίπτωση, δεν χρειάζεται να ανοίξουμε ρητά το αρχείο, να αποκτήσουμε μια λαβή και, στη συνέχεια, να κλείσουμε το αρχείο.

Αποκλεισμός ανάγνωσης

Μπορείτε επίσης να κάνετε ανάγνωση μπλοκ προς μπλοκ, δηλαδή να διαβάσετε έναν ορισμένο αριθμό byte από ένα αρχείο χρησιμοποιώντας τη συνάρτηση fread():

Η συνάρτηση fread() λαμβάνει δύο παραμέτρους: τη λαβή του αρχείου για ανάγνωση και τον αριθμό των byte προς ανάγνωση. Όταν διαβάζεται ένα μπλοκ, ο δείκτης στο αρχείο μετακινείται στο τέλος αυτού του μπλοκ. Επίσης, χρησιμοποιώντας τη συνάρτηση feof() μπορείτε να παρακολουθήσετε την ολοκλήρωση ενός αρχείου.

Γράψτε ένα αρχείο

Για να γράψετε ένα αρχείο, χρησιμοποιήστε τη συνάρτηση fwrite(), η οποία γράφει την ακόλουθη γραμμή στο αρχείο:

Μια άλλη συνάρτηση fputs() λειτουργεί παρόμοια:

Εργασία με τον δείκτη του αρχείου

Όταν ανοίγετε ένα αρχείο για ανάγνωση ή εγγραφή σε λειτουργία "w", ο δείκτης στο αρχείο τοποθετείται στην αρχή. Κατά την ανάγνωση δεδομένων, η PHP μετακινεί τον δείκτη στο αρχείο στο τέλος του μπλοκ των δεδομένων που διαβάζονται. Ωστόσο, μπορούμε επίσης να χειριστούμε χειροκίνητα τον δείκτη στο αρχείο και να τον ορίσουμε σε μια αυθαίρετη θέση. Για να γίνει αυτό πρέπει να χρησιμοποιήσετε τη λειτουργία fseek, το οποίο έχει τον ακόλουθο επίσημο ορισμό:

Int fseek (πόρος $handle , int $offset [, int $whence = SEEK_SET ])

Η παράμετρος $handle αντιπροσωπεύει μια λαβή αρχείου. Η παράμετρος $offset είναι η μετατόπιση σε byte σε σχέση με την αρχή του αρχείου από το οποίο θα ξεκινήσει η ανάγνωση/εγγραφή. Η τρίτη προαιρετική παράμετρος καθορίζει τον τρόπο ρύθμισης της μετατόπισης. Μπορεί να πάρει τρεις τιμές:

    SEEK_SET: προεπιλεγμένη τιμή, ορίζει τη μετατόπιση σε byte μετατόπισης σε σχέση με την αρχή του αρχείου

    SEEK_CUR: ορίζει τη μετατόπιση σε byte μετατόπισης σε σχέση με την αρχή της τρέχουσας θέσης στο αρχείο

    SEEK_END : ορίζει τη μετατόπιση ώστε να αντισταθμίζει τα byte από το τέλος του αρχείου

Εάν ο δείκτης εγκατασταθεί με επιτυχία, η συνάρτηση fseek() επιστρέφει 0 και εάν ο δείκτης δεν είναι επιτυχής, επιστρέφει -1.

Παράδειγμα χρήσης της συνάρτησης:

$fd = fopen("hello.txt", "w+") ή die("δεν ήταν δυνατό να ανοίξει το αρχείο"); $str = "Γεια σου κόσμο!"; // γραμμή για εγγραφή fwrite($fd, $str); // γράψτε τη γραμμή στην αρχή fseek($fd, 0); // τοποθετήστε τον δείκτη του αρχείου στην αρχή fwrite($fd, "Oink"); // γράψτε τη γραμμή στην αρχή fseek($fd, 0, SEEK_END); // τοποθετήστε τον δείκτη στο τέλος fwrite($fd, $str); // γράψτε μια άλλη γραμμή στο τέλος fclose($fd);

Και τώρα θα υπάρξει ένα αρκετά μεγάλο, αλλά όχι περίπλοκο μάθημα σχετικά με την εργασία με αρχεία στην PHP. Πρώτα απ 'όλα, σε τι χρησιμεύουν τα αρχεία; Μετά από όλα, μπορείτε να αποθηκεύσετε τα πάντα σε μια MySQL ή PostgreSQL ή οποιαδήποτε άλλη βάση δεδομένων. Αλλά μερικές φορές υπάρχουν εργασίες όταν η χρήση μιας βάσης δεδομένων, με όλη την επεξεργασία και την ανησυχία για την ασφάλεια της σύνδεσης, δεν συνιστάται. Για παράδειγμα, πρέπει να φτιάξουμε έναν κανονικό μετρητή, αλλά πριν από αυτό δεν χρησιμοποιούσαμε βάση δεδομένων στο έργο. Επομένως, για χάρη ενός μικροσκοπικού μετρητή, πρέπει να δημιουργήσουμε μια βάση δεδομένων και να αποθηκεύσουμε μόνο μερικές γραμμές σε αυτήν; Είναι πολύ πιο εύκολο να χρησιμοποιήσετε αρχεία εδώ. Επιπλέον, μερικές φορές η φιλοξενία δεν υποστηρίζει καθόλου βάσεις δεδομένων, τότε τα αρχεία είναι γενικά η μόνη επιλογή.

Λοιπόν, ας πούμε ότι σας έπεισα ότι τα αρχεία είναι απαραίτητα :) Τώρα ας δούμε πώς να δουλέψουμε με αυτά. Πώς να δημιουργήσετε, να ανοίξετε, να γράψετε, να αντικαταστήσετε, να διαβάσετε και ούτω καθεξής. Καταρχάς.

Δημιουργήστε ένα αρχείο

Η PHP χρησιμοποιεί τη συνάρτηση fopen για να ανοίξει αρχεία. Ωστόσο, μπορεί επίσης να δημιουργήσει αρχεία. Εάν περάσετε στο fopen ένα όνομα αρχείου που δεν υπάρχει, θα το δημιουργήσει.

Η ίδια η λειτουργία fopen παίρνει δύο παραμέτρους, οι οποίες απαιτούνται και οι δύο. Αρχικά, πρέπει να καθορίσουμε το όνομα του αρχείου που θέλουμε να ανοίξουμε. Δεύτερον, περάστε μια παράμετρο που λέει στη συνάρτηση τι σκοπεύουμε να κάνουμε με αυτό το αρχείο (για παράδειγμα, ανάγνωση από το αρχείο, εγγραφή κ.λπ.).

Αν χρειαστεί να δημιουργήσουμε ένα αρχείο, τότε καθορίζουμε το όνομά του και του περνάμε την παράμετρο που θέλουμε να γράψουμε δεδομένα. Σημείωση: Πρέπει να είμαστε βέβαιοι να πούμε στην PHP τι γράφουμε στο αρχείο, διαφορετικά δεν θα δημιουργήσει νέο αρχείο.

Παράδειγμα:

$ourFileName = "testFile.txt";

$ourFileHandle = fopen($ourFileName, "w") ή die("δεν μπορώ να ανοίξω αρχείο");

fclose($ourFileHandle);

Η πρώτη γραμμή $ourFileName = testFile.txt δημιουργεί μια μεταβλητή συμβολοσειράς στην οποία θα αποθηκεύσουμε το όνομα του αρχείου.

Η δεύτερη γραμμή $ourFileHandle = fopen($ourFileName, 'w') ή die ("δεν μπορεί να ανοίξει το αρχείο") αντίστοιχα δημιουργεί ή ανοίγει ένα υπάρχον αρχείο για εγγραφή. Ή επιστρέφει ένα μήνυμα ότι δεν μπορεί να ανοίξει το αρχείο.

Η τρίτη γραμμή fclose($ourFileHandle) κλείνει το αρχείο. Στην πραγματικότητα είναι απλό.

Επιλογές ανοίγματος αρχείων σε php

Η πρώτη παράμετρος 'r' (ανάγνωση) - ανοίγει το αρχείο μόνο για ανάγνωση· δεν μπορείτε να γράψετε σε αυτό.

Η δεύτερη παράμετρος «w» (εγγραφή) – ανοίγει για εγγραφή. Σε αυτήν την περίπτωση, η εγγραφή θα πηγαίνει πάντα από την αρχή του αρχείου. Εάν υπάρχουν ήδη κάποιες πληροφορίες εκεί, θα αντικατασταθούν.

Η τρίτη παράμετρος 'a' (προσάρτηση) - ανοίγει το αρχείο για εγγραφή, αλλά θα προσαρτηθεί στο τέλος του αρχείου, σε αντίθεση με το w.

Προχωρημένες επιλογές:

Παράμετρος 'r+' - ανοίγει τόσο για ανάγνωση όσο και για γραφή. Ο δείκτης θα βρίσκεται στην αρχή του αρχείου.

Παράμετρος 'w+' - ανοίγει τόσο για ανάγνωση όσο και για γραφή, ΑΛΛΑ διαγράφει όλες τις πληροφορίες που υπήρχαν στο αρχείο!!!

παράμετρος 'a+' - ανοίγει για ανάγνωση και εγγραφή, αλλά ο δείκτης θα βρίσκεται στο τέλος του αρχείου.

Φυσικά, μόνο μία από αυτές τις παραμέτρους μπορεί να μεταβιβαστεί σε μια συνάρτηση και όχι πολλές. Πρέπει να αντικατασταθούν με το 'Χ':

fopen ($ourFileName, "X")

Γράψτε στο αρχείο

Λοιπόν, τώρα ανοίξαμε το αρχείο, επιλέξαμε την παράμετρο που χρειαζόμαστε, τι μετά; Πρέπει να γράψετε κάτι σε αυτό. Πως να το κάνεις? Χρησιμοποιώντας τη συνάρτηση fwrite, η οποία παίρνει ως παραμέτρους έναν δείκτη σε ένα αρχείο και μια γραμμή κειμένου που θέλουμε να γράψουμε. Παράδειγμα:

$myFile = "testFile.txt";

$fh = fopen($myFile, "w") ή die("δεν μπορώ να ανοίξω αρχείο");

$stringData = "Πρώτη γραμμή";

fwrite($fh, $stringData);

$stringData = "Δεύτερη γραμμή";

fwrite($fh, $stringData);

Δημιουργήσαμε ένα αρχείο testFile.txt, ο δείκτης σε αυτό αποθηκεύεται στη μεταβλητή $fn. Γράψαμε τη γραμμή "Πρώτη γραμμή" σε αυτήν (στο τέλος χρησιμοποιήσαμε το σύμβολο τέλους γραμμής n) και μετά "Δεύτερη γραμμή". Μετά έκλεισαν τον φάκελο.

ΠΡΟΣΟΧΗ! Μην ξεχάσετε ποτέ να κλείσετε τα αρχεία σας! Διαφορετικά, εάν η εκτέλεση του σεναρίου τερματιστεί ασυνήθιστα, τα δεδομένα στα αρχεία δεν θα αποθηκευτούν! Να χρησιμοποιείτε πάντα το fclose μετά τη δουλειά!!!

Ανάγνωση από αρχείο

Το γράψαμε, ας το διαβάσουμε τώρα! Δεν είναι και τόσο δύσκολο. Χρησιμοποιούμε τη συνάρτηση fread. Ως είσοδο του δίνουμε έναν δείκτη στο αρχείο και τον αριθμό των byte που θέλουμε να διαβάσουμε. Για παράδειγμα, ένας χαρακτήρας ισούται με ένα byte (ανάλογα με την κωδικοποίηση), θέλουμε να διαβάσουμε 5 χαρακτήρες: $theData = fread($fh, 5).

Αλλά αν χρειαστεί να λάβουμε όλες τις πληροφορίες που υπάρχουν στο αρχείο, τότε θα χρειαστούμε τη συνάρτηση μεγέθους αρχείου, η οποία επιστρέφει τον αριθμό των byte στο αρχείο, επομένως, εάν το αποτέλεσμα της συνάρτησης μεγέθους αρχείου περάσει στο fread, τότε θα λάβετε όλες τις πληροφορίες από το αρχείο:

$myFile = "testFile.txt";

$fh = fopen($myFile, "r");

$theData = fread($fh, μέγεθος αρχείου($myFile));

Ελπίζω να το εξήγησα ξεκάθαρα.

$myFile = "testFile.txt";

$fh = fopen($myFile, "r");

$theData = fgets($fh);

Ως αποτέλεσμα, παίρνουμε την πρώτη γραμμή από το αρχείο testFile.txt. Αντίστοιχα, για να περάσετε από όλες τις γραμμές πρέπει να χρησιμοποιήσετε έναν βρόχο foreach:

$lines = αρχείο ("testFile.txt");

foreach ($lines ως $single_line)

echo $single_line . "
n";

Τώρα έχετε μάθει πώς να ανοίγετε αρχεία για ανάγνωση, γραφή ή και τα δύο. Γράψτε δεδομένα σε αυτά ή προσθέστε τα στην κορυφή χρησιμοποιώντας το Append και διαβάστε επίσης πληροφορίες από αυτά.

Εάν μαθαίνετε να εργάζεστε με την PHP μόνοι σας, τότε είναι σημαντικό να μάθετε πώς να διαβάζετε δεδομένα από ένα αρχείο και να κάνετε αλλαγές σε αυτό. Η εγγραφή στο αρχείο php πραγματοποιείται για την ανάπτυξη διαδικτυακών εφαρμογών, αλλαγές στις πληροφορίες διακομιστή και εκκίνηση εξωτερικών προγραμμάτων και συμπερασμάτων.

Πώς να δουλέψετε με αρχεία php

Εάν ένα αρχείο έχει τέτοια επέκταση, σημαίνει ότι περιέχει κώδικα προγράμματος γραμμένο στην ομώνυμη γλώσσα προγραμματισμού. Για να κάνετε αλλαγές, θα χρειαστεί να εγκαταστήσετε έναν από τους επεξεργαστές λογισμικού στον υπολογιστή σας:

PHP Expert Editor.
. Dreamweaver?
. Eclipse Ανάπτυξη PHP;
. PHPEdit.

Εάν δημιουργείτε έναν ιστότοπο, τότε συχνά χρειάζεται να χρησιμοποιείτε πανομοιότυπα σχέδια, τα οποία αποθηκεύονται εύκολα ως πρότυπα σε άλλο αρχείο. Για αυτό είναι καλύτερο να χρησιμοποιήσετε το συμπεριλαμβανόμενο. Αφού εισαγάγετε αυτήν τη συνάρτηση, πρέπει να γράψετε το όνομα και την επέκταση της σύνδεσης στο αρχείο php, για παράδειγμα, να συμπεριλάβετε 1.php. Αυτό το σχέδιο υποστηρίζει πολλαπλές αναγνώσεις του περιλαμβανόμενου αρχείου και ένα επιπλέον χαρακτηριστικό είναι η συνέχεια της εκτέλεσης κώδικα σε περίπτωση σφάλματος. Εάν κάτι πάει στραβά, ο κώδικας θα συνεχίσει να εκτελείται από μια νέα γραμμή.
Με αυτόν τον τρόπο θα συμπεριλάβετε το αρχείο στον κώδικά σας. Ένας άλλος τρόπος είναι να εισαγάγετε απαιτούν. Σε αντίθεση με τη συμπερίληψη που περιγράφεται παραπάνω, το αρχείο περιλαμβάνεται πριν αρχίσει να εκτελείται ο κώδικας του προγράμματος, αλλά μπορείτε να έχετε πρόσβαση μόνο μία φορά.

Επαλήθευση αρχείου

Πριν γράψετε σε ένα αρχείο php, πρέπει να βεβαιωθείτε ότι υπάρχει και στη συνέχεια να το ανοίξετε και να κάνετε την απαραίτητη επεξεργασία. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε τη συνάρτηση file_exists(), εάν επιβεβαιώσει την παρουσία, τότε η απάντηση TRUE θα επιστραφεί στο παράθυρο του επεξεργαστή, διαφορετικά - FALSE.
Μια άλλη συνάρτηση is_file() μπορεί να σας ειδοποιήσει ότι είναι δυνατή η εγγραφή δεδομένων σε ένα αρχείο php. Είναι πιο αξιόπιστο από το file_exits και οι περισσότεροι προγραμματιστές χρησιμοποιούν το is_file για να ξεκινήσουν. Αφού επαληθεύσετε ότι το αρχείο υπάρχει, μπορείτε να ξεκινήσετε να εργάζεστε με αυτό.

Πραγματοποίηση αλλαγών σε ένα αρχείο

Το πρώτο εργαλείο που μπορείτε να χρησιμοποιήσετε για να κάνετε αλλαγές σε ένα αρχείο είναι η fwrite(). Γράφει γραμμές με την ακόλουθη σύνταξη:

Int - χειριστής;
. Η συμβολοσειρά είναι μια μεταβλητή.

Υπάρχει μια άλλη συνάρτηση παρόμοια με αυτήν - η fputs(), η οποία είναι ψευδώνυμο. Δεν υπάρχουν διαφορές μεταξύ αυτών των εργαλείων, μπορείτε να επιλέξετε το ένα ή το άλλο. Για τους μαθητές, το fwrite είναι πιο συνηθισμένο, ενώ οι προγραμματιστές χρησιμοποιούν συχνότερα fputs.

Για να κάνετε μια καταχώρηση PHP σε ένα αρχείο κειμένου, πρέπει να πληρούται μια σημαντική προϋπόθεση - πρέπει να είναι ανοιχτό για επεξεργασία. Αυτό το αρχείο πρέπει να βρίσκεται σε φάκελο με δικαιώματα εγγραφής.

Για να δουλέψετε, δοκιμάστε πρώτα να ανοίξετε ένα έγγραφο κειμένου στο πρόγραμμα και στη συνέχεια να κάνετε αλλαγές χρησιμοποιώντας κανονικά εργαλεία.

// Ανοίξτε ένα αρχείο κειμένου
$f = fopen("text.txt", "w");
// Γράψτε μια συμβολοσειρά κειμένου
fwrite($f, "Γεια! Καλημέρα!");
// Κλείσιμο αρχείου κειμένου
fclose($f);

Σε αυτό το παράδειγμα, text.txt είναι το όνομα του εγγράφου. Μπορείτε να το πείτε διαφορετικά: «Γεια! Καλή μέρα! - ένα παράδειγμα κειμένου, μπορεί να είναι εντελώς αυθαίρετο. Όλες οι αλλαγές αποθηκεύονται αυτόματα στο ανοιχτό αρχείο.

Σημειώστε ότι η PHP είναι γενικής χρήσης. Χρησιμοποιείται εντατικά για τη δημιουργία διαδικτυακών εφαρμογών. Αυτή η λύση υποστηρίζεται από τους περισσότερους παρόχους φιλοξενίας. Μιλάμε για τον ηγέτη μεταξύ των εργαλείων που χρησιμοποιούνται για τη δημιουργία ιστοσελίδων. Τώρα ξέρετε πώς να γράφετε σε ένα αρχείο php.