Menulis file dan membaca file dengan PHP
Pemrograman Web 2 - Dalam pembahasan kali ini, Anda akan belajar beberapa fungsi penting dalam PHP yang memadai untuk semua file dasar membaca dan menulis kebutuhan. Anda akan belajar bagaimana untuk membaca file, menulis ke file, menulis ke file teks, dan memeriksa jika file yang ada.
Untungnya, PHP menyediakan banyak fungsi untuk membaca dan menulis data ke file. Dalam tutorial ini, saya akan menunjukkan kepada Anda cara termudah untuk membaca data dari file lokal atau remote dan bagaimana menggunakan bendera untuk menulis ke file yang persis bagaimana kita ingin.
Memeriksa jika File ada
Langkah pertama Anda ketika mencoba untuk membaca data dari sebuah file atau menulis sesuatu untuk itu harus memeriksa jika file yang sudah ada. Mencoba untuk membaca data dari sebuah file yang tidak ada akan mengakibatkan peringatan dari PHP dan mungkin akan crash kode Anda.
Cara termudah untuk memeriksa apakah file ada adalah dengan menggunakan fungsi file_exists($filename) PHP. Itu akan kembali true jika file atau direktori dengan $filename tertentu ada dan false jika tidak. Ini mungkin jelas, tapi saya ingin menunjukkan bahwa $filename tidak harus hanya menjadi nama file. Hal ini juga dapat path absolut atau relatif. Sebagai contoh, kita bisa menggunakan prime_numbers.txt atau science/project/periodic_table.txt.
Hal ini juga penting untuk diingat bahwa fungsi ini juga akan return false untuk file yang tidak dapat diakses karena pembatasan safe mode.
Fungsi lain yang dapat Anda gunakan untuk memeriksa keberadaan file adalah is_file(). Berbeda dengan file_exists(), fungsi ini hanya akan mengembalikan true jika jalan tertentu poin untuk file dan direktori yang tidak.
Memastikan bahwa File yang benar-benar ada
Jika kode Anda menulis melakukan banyak operasi file pada file tertentu, Anda mungkin mendapatkan hasil yang salah menggunakan fungsi di atas. Hal ini karena hasil pelaksanaan file_exists() dan is_file() cache untuk meningkatkan kinerja. PHP juga cache nilai-nilai yang dikembalikan oleh fungsi filesystem lainnya seperti filesize(), filemtime(), dll.
Anda dapat menghubungi clearstatcache() untuk memastikan bahwa setiap informasi yang Anda mengakses file up-to-date.
Hal ini umumnya hanya masalah jika file yang sama sedang diakses beberapa kali dalam satu skrip untuk mengetahui status. Juga, data yang ditembolok dihapus jika Anda menghapus file dalam script yang menggunakan fungsi unlink(). Ini pada dasarnya berarti bahwa Anda mungkin tidak akan menghadapi masalah terkait caching, tapi masih baik untuk tahu bahwa Anda bisa membersihkan cache dalam hal informasi pergi basi atau jika Anda mendapatkan hasil yang tak terduga ketika mencoba untuk mengakses informasi tentang file.
Membaca Data dari File dalam PHP
Salah satu cara termudah untuk membaca data dari file dalam PHP adalah dengan bantuan dari fungsi file_get_contents ($filename, $use_include_path, $context, $offset, $maxlen). Itu hanya akan membaca seluruh file dan memberikannya kepada Anda dalam bentuk string. Semua parameter kecuali yang pertama opsional.
Parameter kedua menerima sebuah nilai boolean untuk menentukan jika itu harus mencari file dalam lokasi yang ditentukan oleh sertakan path, yang dapat diatur menggunakan fungsi set_include_path().
Anda dapat menggunakan parameter ketiga untuk menentukan sekelompok pilihan untuk memperbaiki bagaimana file yang dapat diakses. Anda dapat menggunakannya untuk menentukan nilai header seperti cookie dan Host serta metode HTTP.
$offset parameter menentukan titik mana membaca dimulai pada file asli. Memberikan nilai negatif akan mulai menghitung dari ujung. Dukungan untuk offset negatif hanya ditambahkan pada PHP 7.1.0. It's worth dicatat bahwa mengimbangi hanya bekerja dengan file lokal dan tidak didukung untuk remote file.
Fungsi file_get_contents() membaca seluruh file sekaligus secara default. Anda dapat mengubah perilaku ini dengan memberikan nilai untuk $maxlen parameter. Panjang karakter untuk dibaca dihitung dari nilai offset.
Fungsi ini akan return false jika gagal untuk membaca data dari file yang Anda tentukan. Namun, itu juga dapat kembali nilai-nilai yang mengevaluasi ke false, jadi pastikan bahwa Anda memeriksa jika itu benar-benar kembali menggunakan palsu === operator.
Anda dapat menggunakan fungsi ini untuk membuka berkas remote, tapi itu akan mungkin hanya jika nilai opsi allow-url-fopen dalam php.ini true atau 1.
Menulis Data ke File di PHP
Salah satu cara termudah untuk menulis data ke file di PHP adalah dengan bantuan dari fungsi file_put_contents ($filename, $data, $flags, $context).
$filename parameter menentukan berkas di mana data akan ditulis. Parameter kedua adalah data yang Anda ingin menulis ke file. Sebagian besar waktu itu akan menjadi string, tetapi juga bisa array atau sumber daya stream.
Ingat bahwa PHP akan secara otomatis membuat file dengan nama yang diberikan untuk Anda jika sudah tidak ada. Namun, itu tidak akan membuat direktori apapun untuk Anda. Ini berarti bahwa Anda dapat menyimpan file dengan nama pada the Origin of Species [Charles Darwin] .txt tanpa kesalahan. Namun, pengaturan $filename untuk biologi/evolusi/On the Origin of Species [Charles Darwin] .txt, jika biologi evolusi/tidak ada, akan mengakibatkan kesalahan.
$flags parameter menentukan bagaimana konten akan ditulis ke file. Hal ini dapat memiliki salah satu atau semua tiga nilai berikut:
FILE_USE_INCLUDE_PATH—ini memberitahu PHP untuk mencari nama file tertentu dalam direktori termasuk.
FILE_APPEND—ini akan memberitahu PHP untuk menambahkan data Anda dikirimkan ke fungsi untuk data yang ada dalam file. Hal ini dapat berguna jika Anda menyimpan data dalam file seperti log atau sebuah diary pribadi. Merekam data baru seperti suhu atau peristiwa yang terjadi pada Anda hari ini tidak akan menimpa sesuatu Anda merekam kemarin.
LOCK_EX—ini akan memberitahu PHP untuk mendapat kunci pada file sebelum mulai menulis konten ke dalamnya. Hal ini dapat mencegah hal-hal tak terduga terjadi ketika dua skrip yang berbeda membaca atau menulis data ke file yang sama. Dengan nilai yang tertentu ini, Anda akan mendapatkan kunci eksklusif pada file. Anda dapat membaca lebih lanjut tentang ini kunci dalam dokumentasi PHP fungsi flock().
Fungsi ini mengembalikan jumlah byte yang ditulis untuk file pada keberhasilan dan false pada kegagalan. Namun, Anda masih harus menggunakan operator ketat kesetaraan untuk memeriksa apakah itu berhasil dalam menulis konten ke file. Itu karena kode yang menulis 0 bytes ke file akan masih mengevaluasi ke false.
Membaca dan menulis Data ke file
Anda dapat kepala ke situs Project Gutenberg dan mencoba untuk men-download file menggunakan fungsi file_get_contents(). Setelah Anda memiliki data dalam string, Anda hanya dapat menyimpannya dalam sebuah file lokal yang menggunakan fungsi file_put_contents(). Contoh berikut akan membuat ini jelas:
<?php
$book_content
=
file_get_contents
(
$filename
);
file_put_contents
(
'Biology/Evolution/On the Origin of Species [Charles Darwin].txt'
,
$book_content
, LOCK_EX);
?>
Anda bisa menyimpan halaman web atau konten dari situs-situs seperti Wikipedia Indonesia dengan cara yang sama. Jika Anda perlu untuk memahami HTML atau parse konten HTML yang Anda hanya disimpan secara lokal, Anda dapat mengikuti tutorial seperti Parsing HTML dengan PHP menggunakan DiDOM, yang akan membantu Anda secara otomatis mendapatkan link, file gambar, atau lain informasi tersebut dari halaman web.
Mari kita kembali ke file lokal sekarang. Pertimbangkan situasi di mana Anda memiliki sekelompok file teks dan Anda ingin menganalisis konten mereka melihat hal-hal seperti kata-kata yang paling umum di dalamnya. Ini bisa dicapai dengan mudah menggunakan sekelompok fungsi built-in PHP.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php $filename = 'On the Origin of Species [Charles Darwin].txt' ; $book_content = file_get_contents ( $filename ); $book_content_lowercase = strtolower ( $book_content ); $individual_words = explode ( ' ' , $book_content_lowercase ); echo "There are about " . count ( $individual_words ). " words in the book: " . substr ( $filename , 0, -4). ".\n" ; $word_frequency = array_count_values ( $individual_words ); echo "Total number of unique words in the book are " . count ( $word_frequency ). ".\n" ; echo "The word 'Elephant' occurs " . $word_frequency [ "elephant" ]. " times in the book.\n" ; echo "The word 'Ant' occurs " . $word_frequency [ "ant" ]. " times in the book.\n" ; if (isset( $word_frequency [ "evolution" ])) { echo "The word 'Evolution' occurs " . $word_frequency [ "evolution" ]. " times in the book.\n" ; } else { echo "The word 'Evolution' does not occur even once in the book.\n" ; } arsort( $word_frequency ); echo "The most used word in the book is: '" .key( $word_frequency ). "'.\n" ; /* Output of all the code above There are about 147520 words in the book: On the Origin of Species [Charles Darwin]. Total number of unique words in the book are 22758. The word 'Elephant' occurs 3 times in the book. The word 'Ant' occurs 6 times in the book. The word 'Evolution' does not occur even once in the book. The most used word in the book is: 'the' . ?> |
Kami menjadi semua teks huruf kecil dan membuat asumsi bahwa setiap satu kata istirahat di ruang. Teks kemudian diubah menjadi sebuah array yang menggunakan explode() untuk membuatnya lebih mudah untuk menganalisa kata-kata. Anehnya, kata "evolusi" tidak digunakan sekali dalam seluruh kitab yang memberikan teori evolusi asal-usulnya.
Ini adalah hanya sebuah contoh secara otomatis menganalisis teks dalam jumlah besar. Anda bisa melakukan sesuatu yang mirip dengan jenis teks yang disimpan dalam file.
Data pendataan dengan FILE_APPEND
Salah satu contoh yang lebih berguna akan informasi pendataan selama jangka waktu kecil. Bisa latihan rutin, data cuaca atau koloni lebah yang mengamati. Setelah Anda memiliki data dalam string, Anda dengan mudah dapat menyimpannya dalam file dan menambahkan ke data yang ada menggunakan bendera FILE_APPEND dengan file_put_contents().
01 02 03 04 05 06 07 08 09 10 11 12 13 14 | <?php $filename = "bee-colony.txt" ; $present = date ( 'l | jS \of F Y h:i:s A' , time()); $entry = $present . "\n" ; // A pseudo function which could be replaced with something real. $bee_information = gather_bee_data(); $entry .= "$bee_information.\n\n" ; file_put_contents ( $filename , $entry , FILE_APPEND|LOCK_EX); ?> |
Kode yang sama dapat digunakan untuk sesuatu seperti menyimpan Wikipedia Feature Pasal hari dalam file setiap hari atau melacak Berita dan headlines selama minggu atau bulan. Semua yang perlu Anda lakukan adalah menulis kode untuk mengikis data dan kemudian menyimpannya menggunakan sesuatu yang mirip dengan cuplikan kode di atas. Tutorial seperti Parsing HTML dengan PHP menggunakan DiDOM dapat membantu Anda dengan mengerik bagian.
Alih-alih menulis teks dalam format polos, Anda bisa membungkusnya dalam beberapa HTML untuk membuatnya lebih mudah untuk membaca di browser. Kemungkinan are endless.
Kesimpulan
Ada banyak cara lain untuk membaca dan menulis data ke file di PHP. Namun, file_get_contents() dan file_put_contents() akan alamat hampir semua kebutuhan dasar Anda tanpa menambahkan komplikasi yang tidak perlu.
Satu-satunya waktu Anda mungkin menghadapi masalah dengan file_get_contents() adalah ketika Anda membaca file yang sangat besar-seperti 2GB atau lebih dalam ukuran. Hal ini karena file_get_contents() load seluruh file ke memori sekaligus, dan ada kesempatan baik kehabisan memori dengan file besar seperti itu. Dalam hal ini, Anda akan harus mengandalkan fungsi seperti fgets() dan fread() untuk membaca bagian kecil dari file sekaligus.
Tidak ada komentar
Posting Komentar