Tutorial pembangunan PHP asas: Operasi fail PHP

1. Sistem fail

1 Kami akan klik kanan tetikus untuk memadam fail, control+c (atau klik kanan) untuk menyalin dan tampal fail dan buat fail baharu Untuk sesetengah fail, semak sama ada fail itu baca sahaja.

2. Alangkah baiknya jika operasi yang dilakukan pada komputer ini boleh dilakukan dalam kod.

3. Sebab, kalau ada operasi ni. Kita boleh melakukan banyak perkara:

  • Bolehkah saya menulis dan mengubah suai fail konfigurasi?

  • Adakah mungkin untuk mengesan kebenaran fail semasa memasang PHP?

  • Adakah mungkin untuk menjana fail Html dan banyak operasi lain

  • ..... Operasi fail digunakan di terlalu banyak tempat lain.

4. Mempelajari pemprosesan fail pada asasnya mempelajari fungsi pemprosesan fail. Gabungkannya dengan kod yang anda tulis sebelum ini untuk meningkatkan keupayaan pemprosesan perniagaan anda.


2 Baca fail

1.readfile membaca fail

Jadi bagaimana untuk membaca fail? Mari belajar fungsi dahulu.

int readfile (rentetan $filename)

Fungsi: Lulus dalam laluan fail dan keluarkan fail.

Dalam kod di bawah, fail dibaca selagi nama fail atau laluan fail yang ditentukan dihantar masuk.

<?php
    //linux类的读了方式
    readfile("/home/paul/test.txt");
    //windows类的读取方式
    readfile("c:\boot.ini");
?>

Nota: Tanda miring Windows dalam kod di atas ialah garis miring dan beberapa aksara mungkin terlepas. Oleh itu, apabila kita menulis, kita menulis dua garis miring.

2.file_get_contents membuka fail

Di atas ialah output langsung selepas hanya membuka fail Adakah terdapat sebarang operasi yang boleh ditetapkan kepada pembolehubah selepas membuka fail?

PHP pasti menyediakan kaedah ini. Kaedah ini adalah salah satu cara PHP membuka fail dan mengembalikan kandungan Mari kita lihat fungsi:

string file_get_contents (string nama fail)

<🎜. >Fungsi: Lulus Masukkan fail atau laluan fail, buka fail dan kembalikan kandungan fail. Kandungan fail ialah rentetan.

<?php
    $filename = 'NoAlike.txt';
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

Kod di atas membuka fail dan mengeluarkan kandungan fail.

Mari kembangkan kod berdasarkan pengetahuan sebelumnya. Gunakan pengetahuan anda yang terdahulu.

<?php
    //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件
     $filename = 'NoAlike.txt';
    //打开这个文件,将文件内容赋值给$filestring
    $filestring = file_get_contents($filename);
    //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
    $filearray = explode("\n", $filestring);
    //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
        //用的单引号,单引号不解释变量进行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

Di atas, kami telah menggabungkan ilmu yang telah kami pelajari sebelum ini.

3. Operasi fopen, fread, dan fclose membaca fail

Kaedah file_get_contents di atas untuk membuka fail adalah mudah dan kasar. Yang berikut

  • sumber fopen (rentetan $nama fail, mod rentetan)

  • rentetan rentetan (sumber $operation resource, int read length)

  • bool fclose ( resource $ operation resource)

Melalui fungsi di atas, kami akan menerangkan kaedah operasi biasa jenis sumber:

  • Sumber terbuka

  • Gunakan fungsi berkaitan untuk beroperasi

  • Tutup sumber

Fungsi fopen Fungsi fopen adalah untuk membuka fail Terdapat dua parameter utama:

l Laluan untuk membuka fail

<. 🎜>l Buka Mod fail

jenis pulangan ialah jenis sumber Ini adalah kali pertama kami menemui jenis sumber yang disebut dalam jenis asas sebelumnya.

Jenis sumber memerlukan fungsi lain untuk mengendalikan sumber ini. Semua sumber mesti ditutup apabila ia dibuka.

fungsi fread Fungsi fungsi adalah untuk membaca sumber fail terbuka. Baca sumber fail dengan panjang yang ditentukan, baca sebahagian daripadanya dan gerakkan sebahagian ke belakang. ke hujung fail.

fungsi fclose Fungsi fungsi fclose ialah untuk menutup sumber. Sumber dibuka dan ditutup.

Selepas memahami fungsi, dua fungsi terakhir agak mudah. Apakah mod fungsi fopen? Mod fopen adalah seperti berikut. 🎜>

Seterusnya, kita hanya akan mempelajari mod r Dalam pelajaran seterusnya, kita akan bercakap tentang mod lain semasa menulis.


38.png3. Kita mesti tahu cara membaca fail terlebih dahulu sebelum dapat menguasai penulisan fail dengan baik.


1 Buka fail


<?php
    //你可以创建一个NoAlike.txt,以只读模式打开
    $fp = fopen('NoAlike.txt', "r");
 
 
    //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
    var_dump($fp);
?>

2. Baca fail

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打开一个文件类型后,读取长度
    $contents = fread($fp, 1024);
?>

3. Tutup fail

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>
Nota lain:

Contoh penggunaan:

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可爱的很\n哟');
fclose($fp);
echo $contents;
?>

Penjelasan: 39.png

Eksperimen tidak boleh membenarkan mata kasar melihat kesan eksperimen ini. Ingat sahaja ciri ini.


Windows menyediakan teg penukaran teks ('t') untuk menukar n kepada rn secara telus.

Berbeza dengan ini, anda juga boleh menggunakan 'b' untuk memaksa mod binari supaya data tidak ditukar. Untuk menggunakan bendera ini, gunakan sama ada 'b' atau 't' sebagai aksara terakhir hujah mod.


4. Cipta dan ubah suai kandungan fail


1.file_put_contents ditulis pada fail


Mari kita pelajari cara pertama untuk menulis fail: int file_put_contents (rentetan $fail laluan, rentetan $tulis data])

Fungsi : Tulis rentetan pada fail yang ditentukan, dan buat fail jika ia tidak wujud. Apa yang dikembalikan ialah panjang bait bertulis

<?php
    $data = "我是一个兵,来自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '写入成功,我们读取看看结果试试:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '写入失败或者没有权限,注意检查';
    }
?>

Kami mendapati bahawa menulis fail agak mudah. Mengikut format fungsi ini, nyatakan fail dan tulis data rentetan.

2.fwrite bekerjasama dengan fopen untuk melaksanakan operasi penulisan

int fwrite ( sumber $ pembolehubah sumber fail, rentetan $ rentetan bertulis [, panjang int ])

Nota: Fungsi alias fwrite ialah fputs

Kami mencuba mod r dalam kelas terakhir, yang hanya digunakan semasa membaca Seterusnya, kami menggunakan fwrite plus w dalam fopen untuk menulis fail dalam mod tulis.

Mari kita lihat ciri-ciri:

Buka dalam mod penulisan, halakan penuding fail ke pengepala fail dan potong saiz fail kepada sifar. Jika fail itu tidak wujud maka cuba menciptanya.

Nota: Dalam percubaan berikut, anda boleh cuba mencipta fail test.txt baharu dan menulis kandungan ke dalamnya. Kemudian, anda boleh cuba memadam test.txt. Lihat apa petua yang ada.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "w");
    $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
    fclose($fp);
    print $len .'字节被写入了\n";
?>

Ringkasan:
1. Sama ada terdapat fail baharu atau tidak, fail akan dibuka dan ditulis semula
2 >3. Fail Jika ia tidak wujud, ia akan dibuat

Kemudian mari kita bandingkan perbezaan antara mod berikut:

40.png

Mari kita buktikan melalui percubaan:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "r+");
    $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘');
    fclose($fp);
    print $len .'字节被写入了\n';
?>

Anda boleh mengalih keluar tanda + selepas r semasa bereksperimen.

Melalui eksperimen, kami mendapati bahawa menggunakan mod r, data boleh ditulis apabila fail disimpan Jika hanya r digunakan, tulisan itu tidak berjaya.

3. Perbezaan antara mod dan mod w

Kod yang sama ada di bawah, kami menukarnya kepada mod.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

Buka halaman web dan laksanakan kod ini, anda akan dapati: setiap kali anda memuat semula, akan ada perenggan tambahan dalam fail

Jika anda keliru di kolej, PHP Academy PHP memberi anda harapan.

Ringkasan:

41.png

Perbezaan antara mod 4.x dan mod w

Mari bereksperimen dengan kod ini sekali lagi, tukar kepada >Jika anda menukar $filename kepada nama fail lain, ia akan menjadi baik. Walau bagaimanapun, apabila saya menyegarkannya semula, ralat telah dilaporkan

x+ ialah mod x dipertingkat. Boleh juga digunakan semasa membaca.

5 Fail yang kami buat sebelum ini adalah fail kekal.

Mencipta fail sementara juga sangat berguna dalam pembangunan projek harian kami. Beberapa faedah mencipta fail sementara:


1 Padamkannya selepas selesai menulis


2. Tidak perlu mengekalkan status pemadaman fail ini Contohnya: Saya perlu memindahkan kandungan fail A ke B dan memindahkan kandungan fail B ke C.

Sama seperti dalam kehidupan sebenar, saya boleh mula-mula menggunakan botol sementara untuk mengisi air B, dan kemudian menulis data A ke dalam B. Masukkan air dari botol sementara ke C.

Mari kita pelajari fungsi ini:

resource tmpfile ( )

Fungsi: Buat fail sementara dan kembalikan jenis sumber. Fail dipadamkan apabila ia ditutup.

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

6. Alihkan, salin dan padam fail

1. $nama lama, $nama baharu);

Fungsi ini mengembalikan nilai bool untuk menukar nama lama kepada nama baharu.

<?php
    //创建了一个临时文件
    $handle = tmpfile();
 
    //向里面写入了数据
    $numbytes = fwrite($handle, '写入临时文件');
 
    //关闭临时文件,文件即被删除
    fclose($handle);
 
    echo  '向临时文件中写入了'.$numbytes . '个字节';
?>

Kami membuka direktori dan kami dapat melihat kesannya. Anda akan mendapati bahawa fail yang ditentukan disalin ke laluan sasaran.

2. Salin fail

Menyalin fail adalah bersamaan dengan teknologi pengklonan, mengklonkan perkara asal kepada perkara baharu. Kedua-duanya kelihatan sama.

salinan bool (fail sumber, fail sasaran)

Fungsi: Salin fail sumber dengan laluan yang ditentukan ke lokasi fail sasaran.

Mari kita bermain dengannya melalui percubaan dan kod:

<?php
    //旧文件名
    $filename = 'test.txt';
 
    //新文件名
    $filename2 = $filename . '.old';
 
    //复制文件
    rename($filename, $filename2);
?>
Ringkasan:

Anda akan mendapati terdapat fail tambahan melalui contoh di atas.

3. Padam fail

Memadamkan fail bermakna memadamkan fail dalam laluan yang ditentukan, tetapi pemadaman ini adalah pemadaman langsung. Jika anda menggunakan komputer Windows, anda tidak dapat melihat fail ini dalam Tong Kitar Semula. Anda hanya akan mendapati bahawa fail ini telah hilang.

bool nyahpaut (fail dengan laluan yang ditentukan)

<?php
    //旧文件名
    $filename = 'copy.txt';
 
    //新文件名
    $filename2 = $filename . '_new';
 
    //修改名字。
    copy($filename, $filename2);
?>

7 >
Sesetengah pelajar sangat ingin tahu tentang tempat pengesanan atribut fail digunakan. Mengesan atribut fail boleh digunakan di terlalu banyak tempat.

Mari berikan contoh: 1 Apabila kami memasang perisian, anda akan mendapati bahawa jika fail itu wujud, ia akan melompat ke tempat lain.

2. Jika sesetengah fail tidak mempunyai kebenaran menulis semasa proses pemasangan, pemasangan tidak akan dibenarkan.

Mari ambil tangkapan skrin proses pemasangan discuz, perisian yang sangat terkenal di China:

Contoh di atas ialah penggunaan pengesanan fail biasa.

Mari kita pelajari kumpulan fungsi berikut. Kemudian, mari belajar melalui contoh.

42.pngbool file_exists ($nyatakan nama fail atau laluan fail)

Fungsi: sama ada fail itu wujud.

bool is_readable ($nyatakan nama fail atau laluan fail)

Fungsi: sama ada fail itu boleh dibaca

bool is_writeable ($specify nama fail atau laluan fail)

Fungsi: sama ada fail boleh ditulis

bool is_executable ($menentukan nama fail atau laluan fail)

Fungsi: sama ada fail boleh laksana

bool is_file ($menentukan nama fail atau laluan fail)

Fungsi: sama ada ia fail

bool is_dir ($ menentukan nama fail atau laluan fail)

Fungsi: Sama ada ia adalah direktori

void clearstatcache (void)

Fungsi: Kosongkan cache status fail
Fungsi di atas boleh dilihat sepintas lalu. Faham. Bagi eksperimen, mari tulis contoh yang kami berikan pada mulanya.

Mari kita bincangkan tentang contoh pertama, kunci fail. Jika ia telah dipasang, jika kunci pemasangan wujud, ia akan menggesa bahawa ia telah dipasang, jika tidak, pemasangan akan diteruskan.

Kami menganggap bahawa URL antara muka pemasangan ialah: install.php, dan fail kunci yang dipasang ialah install.lock. Kami boleh mengesan sama ada fail install.lock wujud.

<?php
    $filename = 'test.txt';
 
    if (unlink($filename)) {
        echo  "删除文件成功 $filename!\n";
    } else {
        echo "删除 $filename 失败!\n";
    }
?>

Mari lakukan eksperimen pengesanan pemasangan fail untuk mengesan sama ada fail atau direktori mempunyai kebenaran menulis atau membaca. Jika tidak, pemasangan tidak boleh dilakukan.

Idea untuk mengendalikan perkara ini adalah seperti berikut:

1 Tentukan kumpulan tatasusunan yang perlu mengesan kebenaran

2 ialah folder atau fail

3 Buat pembolehubah bit set adalah palsu, langkah pemasangan seterusnya tidak akan dipaparkan

<?php
if(file_exists('install.lock')){
    echo '已安装,请不要再次进行安装';
    exit;
}
?>

Melalui contoh di atas, kita telah melakukannya. Laksanakan pengesanan pemasangan semasa proses pemasangan perisian PHP tertentu.

Itulah realisasi idea kami di atas.


8 Fungsi dan pemalar biasa untuk fail

1 Pemalar berikut adalah yang paling biasa digunakan. Merupakan pemalar yang menjadi pembatas direktori fail.

Mari kita lihat format:

43.pngFormat laluan tingkap ialah d:xxxxxx Nota: windows menyokong d:/xxx/xxx

linux Format laluan ialah /home/xxx/xxx Nota: Jika homexxxxxx salah pada Linux

jadi apabila anda mendayakan escape dan seumpamanya, d:xxxxxx adalah sama jika aksara escape digunakan bersama. Apabila menilai, terdapat dua Jika ada, tukarkannya menjadi satu, dan kemudian ganti / untuk memisahkan laluan, supaya laluan pada Linux atau Windows boleh kekal bersatu.

Kami akan menggunakan pemalar:

DIRECTORY_SEPARATOR


Mari tulis contoh kecil untuk menentukan laluan fail semasa:

Memandangkan FILE ialah pratetap Pemalar PHP ditakrifkan, jadi tiada cara untuk mengubahnya Jika perlu, FILE juga boleh menyesuaikan diri dengan sistem pengendalian.

Kemudian jangan gunakan FILE, anda boleh menggunakan pemalar tersuai dan proses FILE, seperti berikut:

<?php
 
//可以定义一批文件是否存在
$files = [
    'config.php',
    'img/',
    'uploads/',
];
 
//定义标志位变量
$flag = true;
foreach($files as  $v){
    echo $v;
 
    //判断是文件还是文件夹
 
    if(is_file($v)){
        echo '是一个文件    ';
    }else if(is_dir($v)){
        echo '是一个文件夹    ';
    }
 
    if(is_readable($v)){
        echo ' 可读';
    }else{
         echo '<font color="red">不可读</font>';
    }
 
    if(is_writeable($v)){
        echo '可写';
    }else{
        echo '<font color="red">不可写</font>';
    }
 
    echo '<br />';
}
 
if($flag){
    echo '<a href="step1">下一步</a>';
 
}else{
     echo '不能进行安装';
}
?>

2. Fungsi operasi penunjuk fail

rewind ( resource handle)

Fungsi: Kembalikan penunjuk ke permulaan

fseek ( resource handle, int offset [, int from_where] )

Fungsi: Gerakkan penuding fail ke belakang mengikut aksara yang ditentukan
Dalam bacaan sebelumnya, kami mendapati bahawa fread membaca data dengan panjang yang ditentukan. Baca kandungan panjang yang ditentukan Pada kali seterusnya anda membacanya, mulakan dari kedudukan asal dan kemudian baca ke belakang.

44.pngSeperti yang ditunjukkan dalam gambar di atas, kita boleh bayangkan:

1 Apabila fail pertama kali dibuka, ikon merah dibaca

2 .Fail warna palsu dibaca dari A hingga C

3 Kami menulis sekumpulan fail dalam fail demo.txt:

    Abcdeefghijklk<🎜. >
  • Opqrst
  • Uvwxyz
  • 12345678

Kita boleh mulakan percubaan.

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>

Dalam contoh di atas, anda akan mendapati bahawa fseek akan menggerakkan sebanyak bait sebagai panjang yang ditentukan. Dan gulung semula kembali ke permulaan fail setiap kali.

Bagaimana untuk bergerak ke penghujung? Kita boleh mengira bilangan bait. Bergerak terus ke belakang semasa fseek.

Mari kita bincangkan tentang bait statistik saiz fail.

3.filesize mengesan saiz fail

<?php
$fp = fopen('output.txt', 'r+');
//读取10个字符
echo fread($fp,10);
 
//指针设置回到开始处
rewind($handle);
//再读取10次看看输出的是什么
echo fread($fp,10);
 
//文件指针向后移动10个字符
echo fseek($fp,10);
 
//再看看文件中输出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4. Fungsi lain untuk mengendalikan fail

Malah, terdapat beberapa fungsi lain untuk mengendalikan fail, baca Dapatkan fail

45.png

Kami menggunakan contoh untuk menggunakan semua fungsi di atas.

Kami menulis sekumpulan fail dalam fail demo.txt:

abcdeefghijklk
opqrst
uvwxyz
12345678
><🎜

<?php
$filename = 'demo.txt';
echo $filename . '文件大小为: ' . filesize($filename) . ' bytes';
?>

fgets membuka satu baris pada satu masa:

<?php
//以增加的r模式打开
$fp = fopen('demo.txt','r+');
//你分发现每次只读一个字符
echo  fgetc($fp);
 
//我要全部读取可以,读取一次将结果赋值一次给$string
while($string = fgetc($fp)){
    echo $string;
}
?>

Dengan kod di atas, anda akan mendapati setiap bacaan membuka satu baris pada satu masa. Pulangan bacaan akhir adalah palsu.

Mari kita lihat fungsi pemintasan fail seterusnya:

<?php
//以增加的r模式打开
$fp = fopen('demo.txt','r+');
//你分发现每次只读一个字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
?>

Dalam contoh di atas, kami mendapati bahawa kandungan boleh dipaparkan selagi ia dipintas.

5. Fungsi masa fail

46.png

<?php
//打开我们上面的demo.txt文件
$file = fopen("demo.txt", "a+");
//你可以数数20个字有多长,看看是不是达到效果了
echo ftruncate($file,20);
fclose($file);
?>



9. Mekanisme kunci fail

Mekanisme kunci fail secara amnya tidak mempunyai kesan sama sekali apabila satu fail dibuka. Bahagian pembelajaran ini sedikit abstrak.

Tidak memikirkan bagaimana untuk mencapainya?

Mengapa anda tidak dapat melihat kesannya?

Jawapan: Kerana komputer beroperasi begitu pantas, pada asasnya pada tahap milisaat. Jadi eksperimen ini sebenarnya tiada kesan.

Dalam bab ini, fahami sahaja konsep asas penguncian fail dan biasakan diri dengan fungsi penguncian fail dan mekanisme penguncian.

Penggunaan kunci fail:

Jika seseorang sedang menulis fail, orang lain turut membuka fail dan menulis fail tersebut.

Dalam kes ini, jika terdapat kebarangkalian perlanggaran tertentu, saya tidak tahu operasi siapa yang akan diguna pakai.
Oleh itu, pada masa ini kami memperkenalkan mekanisme kunci.
Jika pengguna A menulis atau membaca fail ini, tambahkan fail itu pada bahagian tersebut. Saya boleh membacanya, dan begitu juga orang lain.
Namun, jika ini berlaku. Saya menggunakan kunci eksklusif. Fail ini kepunyaan saya. Jangan sentuh kecuali saya melepaskan kunci fail.

Nota: Tidak kira sama ada kunci fail ditambahkan, berhati-hati untuk melepaskannya.

Mari kita lihat fungsi ini:

bool flock ( resource $handle , int $operation)

Fungsi : Penguncian fail perundingan ringan

Mari lihat jenis kunci:

47.png

Mari tambahkan kunci eksklusif pada demo.txt dan teruskan menulis operasi.

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的创建时间是: " . date("Y-m-d H:i:s", filectime($filename));
     echo "$filename文件的修改时间是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

Penerangan:

Dalam contoh di atas, untuk menulis pada fail, saya menambahkan kunci eksklusif pada fail.

Jika operasi saya selesai, selepas penulisan selesai, kunci eksklusif dilepaskan.

Jika anda membaca fail, anda boleh menambah kunci kongsi mengikut idea pemprosesan yang sama.


10. Fungsi pemprosesan direktori

Sebelum kami memproses semua fail, jadi bagaimana untuk berurusan dengan direktori dan folder?

Mari kita pelajari fungsi yang berkaitan dengan pemprosesan direktori atau folder.

Idea asas memproses folder adalah seperti berikut:

Apabila membaca laluan tertentu, tentukan sama ada ia adalah folder

Jika ia adalah folder, buka folder yang ditentukan dan kembalikan fail Pembolehubah sumber direktori

Gunakan readdir untuk membaca fail dalam direktori sekali, dan penunjuk direktori diimbangi ke belakang sekali

Gunakan readdir untuk membaca hingga akhir, jika tiada fail yang boleh dibaca, kembalikan false

Tutup direktori fail

Mari kita pelajari senarai fungsi yang biasa digunakan:

48.png

<?php
$fp = fopen("demo.txt", "r+");
 // 进行排它型锁定
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "文件这个时候被我独占了哟\n");
   // 释放锁定
    flock($fp, LOCK_UN);    
} else {
    echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
}
fclose($fp);
?>

Oleh kerana ia dibaca sekali dan bergerak ke belakang sekali, bolehkah kita

<?php
//设置打开的目录是D盘
$dir = "d:/";
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //读取一次向后移动一次文件夹指针
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       //读取到最后返回false
       //关闭文件夹资源
        closedir($dh);
    }
}
?>


11. >Tetapan kebenaran fail Fungsi ini biasanya digunakan dalam perisian peringkat pengurusan sistem. Contohnya: fail tertentu tidak dibenarkan untuk dilihat oleh kumpulan tetamu (pengguna tetamu).

Dalam pengurusan perusahaan, pengguna tertentu atau fail pengguna tertentu hanya dibenarkan dibaca dan tidak diubah suai. Ini adalah fungsi yang sangat biasa digunakan.

Nota:

Bab ini ialah bab pemahaman. Jika anda tidak pernah belajar Linux sebelum ini dan ia akan menjadi agak sukar, anda boleh melangkau bab ini dan mempelajarinya.

kurang berguna dalam proses pengeluaran sebenar.

Terutamanya untuk pelajar yang mempunyai sistem pengetahuan yang komprehensif di bawah Linux dan boleh fokus pada pembelajaran.

Sesetengah fungsi di bawah tingkap tidak dapat dilaksanakan.

49.pngPenggunaan fungsi di atas adalah sama seperti penggunaan operasi kebenaran Linux.

Ia agak mudah untuk pelajar yang telah mempelajari Linux. Mereka yang belum mempelajarinya akan merasa sukar sedikit.


Saya hanya akan memberi anda contoh untuk melihat cara mengubah suai kebenaran:

chmod terutamanya mengubah suai kebenaran fail

<?php
//设置打开的目录是D盘
$dir = "d:/";
 
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //读取到最后返回false,停止循环
       while (($file = readdir($dh)) !== false) {
            echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>



12. Fungsi laluan fail


1 🎜>

Kami sering menghadapi situasi memproses laluan fail.

Contohnya:

Akhiran fail perlu dikeluarkan

Laluan perlu mengeluarkan nama tetapi bukan direktori

Hanya direktori laluan dalam nama laluan perlu dikeluarkan

Atau huraikan setiap bahagian URL untuk mendapatkan nilai bebas

Atau pun bentuk URL sendiri

... ....

Ia diperlukan di banyak tempat Fungsi kelas pemprosesan laluan.

Kami telah menandakan fungsi pemprosesan laluan yang biasa digunakan untuk semua orang Anda hanya boleh memproses fungsi pemprosesan laluan ini:

50.png

2.Pathinfo<🎜. >

array pathinfo (string $path)Fungsi: Lulus dalam laluan fail dan mengembalikan pelbagai komponen fail

Kami menggunakan contoh khusus Sila lihat:

<?php
//修改linux  系统/var/wwwroot/某文件权限为755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

Hasilnya adalah seperti berikut:

Nama direktori fail: d:/www

Nama fail penuh: lib.inc.php
Sambungan fail: php
Tiada Fail nama yang mengandungi sambungan: lib.inc

3.Nama asas

nama asas rentetan ( rentetan $path[, rentetan $akhiran ]) fungsi : Lulus dalam laluan dan kembalikan nama fail
Parameter pertama melepasi laluan.
Parameter kedua menyatakan bahawa nama fail saya akan berhenti apabila ia mencapai aksara yang ditentukan.

<?php
$path_parts = pathinfo('d:/www/index.inc.php');
 
echo '文件目录名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件扩展名:'.$path_parts['extension']."<br />";
echo '不包含扩展的文件名:'.$path_parts['filename']."<br />";
?>

Kesimpulan: Anda boleh melaksanakannya untuk melihat sama ada bahagian direktori fail dikembalikan.

5.parse_url

parse_url bercampur (rentetan $path)Fungsi: Pisahkan URL kepada pelbagai bahagian

<?php 
echo "1: ".basename("d:/www/index.d", ".d").PHP_EOL;
echo "2: ".basename("d:/www/index.php").PHP_EOL;
echo "3: ".basename("d:/www/passwd").PHP_EOL; 
?>
4.Dirname
dirname(string $路径) 功能:返回文件路径的文件目录部份
<?php
dirname(__FILE__);
?>

Hasilnya adalah seperti berikut:

array(8) {

["scheme"]=> string(4) "http"
["host"]=> 8 ) "nama hos"
["port"]=> int(9090)
["pengguna"]=> "nama pengguna"
["pass"]=> ( 8) "kata laluan"
["path"]=> rentetan(5) "/path"
["query"]=> rentetan(9) "arg=value"
[" serpihan "]=> rentetan(6) "anchor"
}

6.http_build_query

rentetan http_build_query ($data bercampur untuk diproses ) Fungsi: Hasilkan rentetan pertanyaan dalam url

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>

Hasilnya adalah seperti berikut:

nama pengguna=liwenkai&area=hubei

http_build_url()

Fungsi: Hasilkan url

Nota: Pemalar PHP_EOL
bersamaan dengan echo "rn" pada platform windows
bersamaan dengan echo "; n" pada platform unixlinux ;
Setara dengan gema "r" pada platform mac;




13. Teks buku tetamu

Kami telah bercakap tentang begitu banyak sistem pemprosesan fail, tetapi kami tidak dapat menulis perkara yang paling asas.

Bermula dari bahagian ini, anda akan mendapati bahawa anda boleh menulis lebih banyak perkara.

Seterusnya mari kita lihat kesan demonstrasi:

Antara muka borang untuk menulis kandungan mesej dalam antara muka berikut:


Antara muka paparan selepas meninggalkan mesej :

51.png

Mari kita lihat struktur fail:

index.php --- Paparkan kotak input dan kandungan mesej write.php ---Tulis data ke message.txt
message.txt ---Simpan kandungan sembang

fail indeks.php

<?php
//定义一个关联数组
$data = [
        'username'=>'liwenkai',
        'area'=>'hubei'
         ];
//生成query内容
echo http_build_query($data);
?>

Selepas membaca kandungan yang baru ditunjukkan, kita tahu bahawa apabila fail disimpan:

Bahagian dibahagikan antara bahagian

Kandungan dan pengguna dipisahkan sebelum menggunakan simbol khas

Jom tulis kod write.php untuk menulis mesej pada fail:

<?Php
//设置时区
date_default_timezone_set('PRC');
 
//读了内容
@$string = file_get_contents('message.txt');
 
//如果$string 不为空的时候执行,也就是message.txt中有留言数据
if (!empty($string)) {
 
    //每一段留言有一个分格符,但是最后多出了一个&^。因此,我们要将&^删掉
    $string = rtrim($string, '&^');
 
    //以&^切成数组
    $arr = explode('&^', $string);
 
    //将留言内容读取
    foreach ($arr as $value) {
 
        //将用户名和内容分开
        list($username, $content, $time) = explode('$#', $value);
 
        echo '用户名为<font color="gree">' . $username . '</font>内容为<font color="red">' . $content . '</font>时间为' . date('Y-m-d H:i:s', $time);
        echo '<hr />';
    }
 
}
 
?>
 
 
<h1>基于文件的留言本演示</h1>
<form action="write.php" method="post">
    用户名:<input type="text" name="username" /><br />
 
    留言内容:<textarea  name="content"></textarea><br />
 
    <input type="submit" value="提交" />
 
</form>
Meneruskan pembelajaran
||
<?php //linux类的读了方式 readfile("/home/paul/test.txt"); //windows类的读取方式 readfile("c:\\boot.ini"); ?>
  • Cadangan kursus
  • Muat turun perisian kursus