検索
ホームページバックエンド開発PHPチュートリアルPHP の高度な機能 2: ファイル処理、_PHP チュートリアル

PHP の高度な機能 2: ファイル処理、

PHP のファイル処理も非常に重要なモジュールです。この記事の主な内容は、PHP のファイル システムの紹介です。

ファイルシステムの目的

1. プロジェクトの処理はファイルの処理と切り離せないものです

2. ファイルを使用してデータを長期間保存できます

3. キャッシュを作成し、サーバーでファイル操作を実行します

ファイルシステム機能の使い方の詳細説明

1.基本的な判定機能

リーリー

2. ファイル関連情報を取得する

リーリー

ファイル名を渡してその詳細を出力する例を以下に書いてみましょう。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 関数 getFileInfo($ファイル名){ if(!file_exists($ファイル名)){ echo 'ファイル'.($ファイル名).'は存在しません'; } if(is_file($ファイル名)){ echo $filename.' はファイルです '; } if(is_dir($ファイル名)){ echo $filename.' はディレクトリです '; } if(is_executable($ファイル名)){ echo $filename.' は実行可能ファイルです'; }else{ echo $filename.'は実行可能ファイルではありません'; } if(is_readable($ファイル名)){ echo $filename.' は読み取れます'; }else{ echo $filename.' は読み取れません' ; } if(is_writable($ファイル名)){ echo $filename.'は書き込み可能です'; }else{ echo $filename.' は書き込み可能ではありません' ; } echo ファイル「.$filename.」のサイズは「.getFileSize(filesize($filename).」です; echo ファイル '.$filename.' は '.filetype($filename).''; echo ファイル '.$filename.' の所有者は '.fileowner($filename).''; echo 'ファイル'.$filename.'の最終アクセス時刻は'.getTime(fileatime($filename))です。 ; echo ''file'.$filename.'のinodeは'.fileinode($filename).''; echo 'ファイル「.$filename.」の変更時刻は「.getTime(filemtime($filename))」です。 ; echo '「ファイル'.$filename.」の権限は「.fileperms($filename).; } 関数 getTime($時間){ 帰り 日付('Y-m-d H:i:s',$時間); }   関数 getFileSize($サイズ){ $dw = 'B'; if($サイズ>=pow(2,40)){ $サイズ=round($size/pow(2,40),2); $dw = 'PB'; }else if($サイズ>=pow(2,30)){ $サイズ=round($size/pow(2,30),2); $dw = 'TB'; }else if($サイズ>=pow(2,20)){ $サイズ=round($size/pow(2,20),2); $dw = 'GB'; }else if($サイズ>=pow(2,10)){ $サイズ=round($size/pow(2,10),2); $dw = 'MB'; } 返品 $サイズ.$dw; } getFileInfo('1.php');

运行结果

<p>1.<span id="10_nwp">php是一个文件<br />1.php不是可执行文件<br />1.php是可读的<br />1.php不是可写入的<br />文件1.php的大小是2MB<br />文件1.php的类型是file<br />文件1.php的所有者是1000<br />文件1.php的最后访问时间为2015-03-04 12:58:33<br />文件1.php的inode是536185<br />文件1.php的修改时间是2015-03-04 12:58:32<br />文件1.php的权限是33204</span></p>

 3.文件路径相关函数

相对路径:相对于当前目录的上级和下级目录

<p>. 当前目录<br />.. 上一级目录</p>

路径分隔符号

<p>linux/Unix &ldquo;/&rdquo;<br />windows &ldquo;\&rdquo;<br />不管是什么操作系统PHP的目录分割符号都支技 / (Linux)</p>

绝对路径:可以指的操作系统的根,也可以指的是存放网站的文档根目录

<p>如果是在服务器中执行(通过PHP文件处理<span id="9_nwp">函数执行)路径 则 &ldquo;根&rdquo;指的就是操作系统的根<br />如果程序是下载的客户端,再访问<span id="8_nwp">服务器中的文件时,只有通过Apache访问,&ldquo;根&rdquo;也就指的是文档根目录</span></span></p>

三个相关函数

<p>basename &mdash; 返回路径中的<span id="7_nwp">文件名部分</span></p>
<p>dirname &mdash; 返回路径中的目录部分</p>
<p>pathinfo &mdash; 返回文件路径的信息</p>

例如下面的例子

 
1 2 3 4 5 6 7 8     $url1="./aaa/bbb/index.php";     $url2="../www/yyy/login.rar";     $url3="c:/appserv/www/demo.html";     $url4="http://localhost/yyy/www.gif";     echo basename($url1);     echo basename($url2);     echo basename($url3);     echo basename($url4);

运行结果

<p>index.<span id="6_nwp">php<br />login.rar<br />demo.html<br />www.gif</span></p>

可以看出,basename这个函数返回的是文件的名,也就是最后一个项目。
下面我们看一下dirname的用法

 
1 2 3 4 5 6 7 8     $url1="./aaa/bbb/index.php";     $url2="../www/yyy/login.rar";     $url3="c:/appserv/www/demo.html";     $url4="http://localhost/yyy/www.gif";     echo dirname(dirname($url1));     echo dirname($url2);     echo dirname($url3);     echo dirname($url4);

运行结果

<p>./aaa<br />../www/yyy<br />c:/appserv/www<br />http://localhost/yyy</p>

可以发现,dirname这个函数可以多层嵌套使用,返回的就是它所在的路径,即除了最后一项之外所有的项。

另外 pathinfo的以上所有信息都可以获取到,另外还包括了文件名和扩展名

比如下面的结果

<p>Array ( [dirname] => ../www/yyy [basename] => login.rar [extension] => rar [filename] => login )</p>

4. 文件的创建删除修改

<p>touch &mdash; 创建一个文件</p>
<p>unlink &mdash; 删除文件</p>
<p>rename &mdash; 重命名一个文件或目录</p>
<p>copy &mdash; <span id="5_nwp">拷贝文件</span></p>

例如下面的例子

 
1 2 3 4 5 touch("./php.apahce"); //创建文件 unlink("C:/AppServ/www/xsphp/apache.php");  //删除文件 rename("./test.txt", "d:/test2.txt");    //重命名文件 copy("cache.txt", "./cache5.txt");   //复制文件 chmod("a.txt",755);   //设置文件权限

权限相关内容

<p>rwx 表这个文件的拥有者 r读 w写 x执行<br />rwx 表这个文件的拥有者所在的组 r读 w写 x执行<br />rwx 其它用户对这个为文件的权限 r读 w写 x执行</p>

文件读写

1. file_get_contents(string)

传入文件名,直接得到文件中的文本信息,返回的内容即为文件中的文本。

例如

 
1 2 3 4 $str = file_get_contents("1.txt"); echo $str; ?>

则直接打开了 1.txt 文件中的内容,并返回文件中的文本信息。

如果文件不存在,那么会提示

<p><strong>Warning</strong>: file_get_contents(2.txt): failed to open stream: No such file or directory</p>

同样,文件还可以是远程文件,例如,参数传入 http://www.qq.com

即可以呈现腾讯网的首页内容。

缺点:不能读取指定部分的内容,一次性全部读取。

2. file_put_contents(filename,content)

写入文件,filename是写入文件的文件名,content是写入内容,返回值是成功写入的字符长度。

 
1 2 3 echo file_put_contents("2.txt",'abcd'); ?>

2.txt 文件如果不存在,那么则会创建这个文件并写入 abcd 这个字符串,返回 4 ,为字符串的长度。 如果文件存在,则会将文件清空,然后写入字符串,返回写入长度。

缺点:不能以追加的方式写入文件。

3.file(filename)

file是直接打开某一个文件,返回的结果是一个数组,每一行是数组的一个元素。也就是说,获取行数只需要输出数组的大小即可。例如

 
1 2 3 4 5 $str = file("1.txt"); var_dump($str); echo count($str); ?>

即可得到数组形式的行内容,而且输出了行数。

缺点:不能读取指定部分的内容。

4.fopen(filename,mode)

filename是文件名,可以是路径加名,也可以是远程服务器文件。

mode是打开文件的方式

<p>r,以只读模式打开文件<br />r+,除了读,还可以写入。<br />w, 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则会清除原文件中所有内容,再写入(打开已有的重要文件)<br />w+,除了可以写用fwrite, 还可以读fread<br />a,以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则不清除原有文件内容,再原有文件内容的最后写入新内容,(追加)<br />a+,除了可以写用fwrite, 还可以读fread<br />b,以二进制模式打开文件(图,电影)<br />t,以文本模式打开文件</p>

注意:

<p>r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;</p>
<p>w+具有读写属性,写的时候如果文件存在,会被清空,从头开始写。</p>

返回的是一个文件资源

5.fwrite(file,content)

文件写入功能,file是文件资源,用fopen函数获取来的,content是写入内容。同 fputs 函数。

例如

 
1 2 3 4 5 6 7 8 9 php $file = fopen("1.txt","r+"); $result = fwrite($file,"xx"); if($result){ echo "Success"; }else echo "Failed"; } ?>

则从头开始写入资源,即把前两个字符设为 xx

6. fread(file,size)

读取文件指定部分的长度,file是文件资源,由fopen返回的对象,size是读取字符的长度。

例如

 
1 2 3 4 5 $file = fopen("1.txt","r"); $content = fread($file,filesize("1.txt")); echo $content; ?>

ただし、上記のファイルサイズメソッドはローカルファイルサイズしか取得できず、リモートファイルを読み取るには別のメソッドが必要です。

例えば

1 2 3 4 5 6 7 8 $file = fopen("http://www.qq.com","r"); $str = ""; while(!feof($file)){ //判断する時はファイルの終わりです $str.=fread($file,1024); } エコー $str; ?>

7.fgets(ファイル)

file はファイル リソースであり、一度に 1 行ずつ読み取ります。たとえば、テンセントのホームページに何行あるかを読み取ります。

1 2 3 4 5 6 7 8 9 10 $file = fopen("http://www.qq.com","r"); $str = ""; $count = 0; ながら(!feof($file)){ $str .= fgets($file); $count ++; } エコー $count; ?>

結果 8893 が出力されます。ソース ファイルの合計行数を確認して確認できます。

7.fgetc(ファイル)

fgets メソッドとよく似ていますが、file はファイル リソースであり、毎回文字を読み取ります。たとえば、テンセントのホームページに何文字あるのかを読み取ります。

1 2 3 4 5 6 7 8 9 10 $file = fopen("http://www.qq.com","r"); $str = ""; $count = 0; ながら(!feof($file)){ $str .= fgetc($file); $count ++; } エコー $count; ?>

上述代码便会输出所有的字符数量。

8.ftell(file)

ftell 是返回当前读文件的指针位置,file 是文件资源,是由 fopen 返回的对象。

9.fseek(file,offset,whence)

file

文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

offset

偏移量。

要移动到文件尾之前的位置,需要给 offset 传递一个负值,并设置 whence 为 SEEK_END。

whence

<p>SEEK_SET &ndash; 设定位置等于 offset 字节。</p>
<p>SEEK_CUR &ndash; 设定位置为当前位置加上 offset。</p>
<p>SEEK_END &ndash; 设定位置为文件尾加上 offset。</p>

10.rewind($file)

回到文件头部,file是文件资源

例如

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 php $file = fopen("1.txt","r"); echo ftell($file)."
"; //読み取り前のポインタ位置を出力
echo fread($file,10)."
"; //10文字を読み取り、ポインタを10単位移動します
echo ftell($file)."
"; //読み取り後に現在のポインタ位置を出力します
fseek($file,20,SEEK_CUR); //現在のポインタが20単位進みます echo ftell($file)."
"; //移動後のポインタの位置を出力
echo fread($file,10)."
"; //読み取った10文字を出力します
echo ftell($file)."
"; //10文字読み取った後のポインタの位置を出力
fseek($file,-20,SEEK_END); //ポインタをファイル末尾の最初の20文字に移動します echo ftell($file)."
"; //移動後のポインタの位置を出力
echo fread($file,10)."
"; //输出文件末尾20个字符
echo ftell($file)."
"; //输出读完10个字符之后指针的位置
rewind($file); //回到文件头部 echo ftell($file)."
"; //输出移动之后指针的位置
?>

运行结果:

<p>0<br />cuiqingcai<br />10<br />30<br />uiqingcai.<br />40<br />374<br />i.comcuiqi<br />384<br />0</p>

11.flock(file,operation[,wouldblock])

file

文件资源指针,是典型地由 fopen() 创建的 resource(资源)。

operation

operation 可以是以下值之一:

<p>LOCK_SH取得共享锁定(读取的程序)。</p>
<p>LOCK_EX 取得独占锁定(写入的程序。</p>
<p>LOCK_UN 释放锁定(无论共享或独占)。</p>

如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。

wouldblock

如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),可选的第三个参数会被设置为 TRUE。(Windows 上不支持)

例如

 
1 2 3 4 5 6 7 php $file = fopen("1.txt","a"); if(flock($file,LOCK_EX)){ fwrite($file,"xxx"); flock($file,LOCK_UN); } ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1011002.htmlTechArticlePHP高级特性二之文件处理, PHP中的文件处理也是一个相当重要的模块,这一篇的主要内容就是PHP中文件系统的简介。 文件系统用途 1. 项目...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境