目次
1.fread
2.fgets
3.fgetss
4.ファイル
6.file_get_contents
8.parse_ini_file
ホームページ php教程 php手册 PHP でファイルを読み取る一般的な方法

PHP でファイルを読み取る一般的な方法

Jun 14, 2016 am 12:02 AM
php コード オープンソース 書類 プログラミング プログラミング言語 読む ソフトウェア開発

将来簡単に参照できるように、PHP でファイルを読み取るいくつかの方法を整理しました。

1.fread

string fread ( int $handle , int $length )

fread() は、handle が指すファイルから最大 length バイトを読み取ります。この関数は、最大 length バイトの読み取り後、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが使用可能になったとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。どの条件が最初に発生したかに応じて異なります。

fread()は読み取った文字列を返し、エラーが発生した場合はFALSEを返します。

<?php <br>    <span style="color: #800080;">$filename</span> = "/usr/local/something.txt";<br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>(<span style="color: #800080;">$filename</span>, "r");<span style="color: #008000;">//</span><span style="color: #008000;">读取二进制文件时,需要将第二个参数设置成'rb'<br>    <br>    //通过filesize获得文件大小,将整个文件一下子读到一个字符串中</span><span style="color: #008000;"><br></span>    <span style="color: #800080;">$contents</span> = <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, <span style="color: #008080;">filesize</span> (<span style="color: #800080;">$filename</span>));<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー


読み込むファイルがローカルの通常ファイルではなく、リモートファイルやストリームファイルの場合、filesize ではこれらのファイルのサイズが取得できないため、この方法は使用できません。このとき、feof() または fread() の戻り値を使用して、ファイルの終端を読み取ったかどうかを判断する必要があります。

例:

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('http://www.baidu.com', 'r');<br>    <span style="color: #800080;">$content</span> = '';<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #800080;">$content</span> .= <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, 8080);<br>    }<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$content</span>;<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー

または:

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('http://www.baidu.com', 'r');<br>    <span style="color: #800080;">$content</span> = '';<br>    <span style="color: #0000ff;">while</span>(<span style="color: #0000ff;">false</span> != (<span style="color: #800080;">$a</span> = <span style="color: #008080;">fread</span>(<span style="color: #800080;">$handle</span>, 8080))){<span style="color: #008000;">//</span><span style="color: #008000;">返回false表示已经读取到文件末尾</span><span style="color: #008000;"><br></span>        <span style="color: #800080;">$content</span> .= <span style="color: #800080;">$a</span>;<br>    }<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$content</span>;<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー

2.fgets

string fgets ( int $handle [, int $length ] )

fgets() は、handle が指すファイルから 1 行を読み取り、最大 length - 1 バイトの長さの文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイト (いずれか最初に発生した方) が読み取られたときに停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./file.txt', 'r');<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #0000ff;">echo</span> <span style="color: #008080;">fgets</span>(<span style="color: #800080;">$handle</span>, 1024);<br>    }<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー

注: PHP 4.2.0 以降、length パラメータはオプションになります。省略した場合、行の長さは 1024 であるとみなされます。 PHP 4.3 以降、length を省略すると、行の終わりまでストリームからの読み取りが継続されます。ファイル内のほとんどの行が 8KB を超える場合は、スクリプトで最大行長を指定すると、リソースをより効率的に利用できます。 PHP 4.3 以降、この関数はバイナリ ファイルに対して安全に使用できます。以前のバージョンにはありません。

3.fgetss

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

fgets と同じ機能ですが、fgetss は読み取ったテキストから HTML タグと PHP タグを削除しようとします。オプションの 3 番目のパラメータを使用して、削除しないタグを指定できます。

<?php <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./file.txt', 'r');<br>    <span style="color: #0000ff;">while</span>(!<span style="color: #008080;">feof</span>(<span style="color: #800080;">$handle</span>)){<br>        <span style="color: #0000ff;">echo</span> <span style="color: #008080;">fgetss</span>(<span style="color: #800080;">$handle</span>, 1024, '<br>');<br>    }<br>    <span style="color: #008080;">fclose</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー

4.ファイル

array file (string $filename [, int $use_include_path [, resource $context ]] )
ファイルの内容を配列に読み込みます (配列の各要素)エントリは、改行を含むファイル内の行に対応します。行終了記号が必要ない場合は、rtrim() 関数を使用して改行文字を除外できます。

<?php <br>    <span style="color: #800080;">$a</span> = <span style="color: #008080;">file</span>('./file.txt');<br>    <span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$a</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$line</span> => <span style="color: #800080;">$content</span>){<br>        <span style="color: #0000ff;">echo</span> 'line '.(<span style="color: #800080;">$line</span> + 1).':'.<span style="color: #800080;">$content</span>;<br>    }<br>?>
ログイン後にコピー


5.readfile

int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )

ファイルを読み取り、出力バッファに書き込みます。ファイルから読み取られたバイト数を返します。 @readfile() として呼び出されない限り、エラー時に FALSE を返し、エラー メッセージを表示します。

<?php <br>    <span style="color: #800080;">$size</span> = <span style="color: #008080;">readfile</span>('./file.txt');<br>    <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$size</span>;<br>?>
ログイン後にコピー

6.file_get_contents

string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

ファイルを文字列に読み取ります。 3 番目のパラメータ $context は、リモート ファイルにアクセスするときのタイムアウトの設定など、いくつかのパラメータを設定するために使用できます。

さらに、file_get_contents は上記の関数よりもパフォーマンスがはるかに優れているため、file_get_contents を最初に使用する必要があります。ただし、readfile は fopen を呼び出す必要がないため、file_get_contents(?) よりもパフォーマンスが優れているようです。

<?php <br>    <span style="color: #800080;">$ctx</span> = <span style="color: #008080;">stream_context_create</span>(<span style="color: #0000ff;">array</span>( <br>        'http' => <span style="color: #0000ff;">array</span>( <br>            'timeout' => 1    <span style="color: #008000;">//</span><span style="color: #008000;">设置超时</span><span style="color: #008000;"><br></span>            ) <br>        ) <br>    ); <br>    <span style="color: #0000ff;">echo</span> <span style="color: #008080;">file_get_contents</span>("http://www.baidu.com/", 0, <span style="color: #800080;">$ctx</span>); <br>?>
ログイン後にコピー


7.fパススルー

int fpassthru ( resource $handle )

指定されたファイル ポインターを現在位置から EOF まで読み取り、結果を出力バッファーに書き込みます。

<?php <br>    <span style="color: #008080;">header</span>("Content-Type:text/html;charset=utf-8"); <br>    <span style="color: #800080;">$handle</span> = <span style="color: #008080;">fopen</span>('./test2.php', 'r');<br>    <span style="color: #008080;">fseek</span>(<span style="color: #800080;">$handle</span>, 1024);<span style="color: #008000;">//</span><span style="color: #008000;">将指针定位到1024字节处</span><span style="color: #008000;"><br></span>    <span style="color: #008080;">fpassthru</span>(<span style="color: #800080;">$handle</span>);<br>?>
ログイン後にコピー

 

8.parse_ini_file

  array parse_ini_file ( string $filename [, bool $process_sections ] )

  parse_ini_file() 载入一个由 filename 指定的 ini 文件,并将其中的设置作为一个联合数组返回。如果将最后的 process_sections 参数设为 TRUE,将得到一个多维数组,包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。

  注意:

1. 如果 ini 文件中的值包含任何非字母数字的字符,需要将其括在双引号中(")。
2. 有些保留字不能作为 ini 文件中的键名,包括:null,yes,no,true 和 false。值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。字符 {}|&~![()" 也不能用在键名的任何地方,而且这些字符在选项值中有着特殊的意义。

test.ini文件内容:

; This is a sample configuration <span style="color: #008080;">file</span><br>; Comments start with ';', <span style="color: #0000ff;">as</span> in php.ini<br><br>[first_section]<br>one = 1<br>five = 5<br>animal = BIRD<br><br>[second_section]<br>path = "/usr/local/bin"<br>URL = "http://www.example.com/~username
ログイン後にコピー

test.php内容:

<?php <br>    <span style="color: #800080;">$config</span> = <span style="color: #008080;">parse_ini_file</span>('./test.ini', ture);<br>    <span style="color: #008080;">print_r</span>(<span style="color: #800080;">$config</span>);<br>?>
ログイン後にコピー

输出内容:

Array<br>(<br>    [first_section] => Array<br>        (<br>            [one] => 1<br>            [five] => 5<br>            [animal] => BIRD<br>        )<br><br>    [second_section] => Array<br>        (<br>            [path] => /usr/local/bin<br>            [URL] => http://www.example.com/~username<br>        )<br><br>)
ログイン後にコピー

 

 

 

几个注意事项:

  1. 鼓励在处理二进制文件时使用 b 标志,即使系统并不需要,这样可以使脚本的移植性更好。 

  2. allow_url_fopen选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件,一些扩展库例如 zlib 可能会注册更多的封装协议。出于安全性考虑,此选项只能在 php.ini 中设置。

  3. 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

コーディングの鍵: 初心者のための Python の力を解き放つ コーディングの鍵: 初心者のための Python の力を解き放つ Oct 11, 2024 pm 12:17 PM

Python は、学習の容易さと強力な機能により、初心者にとって理想的なプログラミング入門言語です。その基本は次のとおりです。 変数: データ (数値、文字列、リストなど) を保存するために使用されます。データ型: 変数内のデータの型 (整数、浮動小数点など) を定義します。演算子: 数学的な演算と比較に使用されます。制御フロー: コード実行のフロー (条件文、ループ) を制御します。

Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Python による問題解決: 初心者プログラマーとして強力なソリューションをアンロックする Oct 11, 2024 pm 08:58 PM

Python は、問題解決の初心者に力を与えます。ユーザーフレンドリーな構文、広範なライブラリ、変数、条件文、ループによる効率的なコード開発などの機能を備えています。データの管理からプログラム フローの制御、反復的なタスクの実行まで、Python が提供します

C の謎を解く: 新人プログラマーのための明確でシンプルな道 C の謎を解く: 新人プログラマーのための明確でシンプルな道 Oct 11, 2024 pm 10:47 PM

C は、初心者がシステム プログラミングを学習するのに最適な選択肢です。ヘッダー ファイル、関数、メイン関数のコンポーネントが含まれています。 「HelloWorld」を印刷できる単純な C プログラムには、標準入出力関数宣言を含むヘッダー ファイルが必要で、main 関数で printf 関数を使用して印刷します。 C プログラムは、GCC コンパイラーを使用してコンパイルして実行できます。基本をマスターしたら、データ型、関数、配列、ファイル処理などのトピックに進み、熟練した C プログラマーになることができます。

See all articles