ホームページ  >  記事  >  バックエンド開発  >  【PHP学習100日おめでとう】3日目:手に負えないPHPファイル操作_PHPチュートリアル

【PHP学習100日おめでとう】3日目:手に負えないPHPファイル操作_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:55865ブラウズ

この号のモットー:

データベースが存在しなかった頃、ファイルの読み書きは、私たちプログラマーが誰もいない夜にできる唯一のことでした (必ずしもそうではないかもしれません~~~)。したがって、このテクノロジーが現在どれほどシンプルで高速で一般的になったとしても、私たちは依然として細心の注意を払う姿勢と厳格な倫理を維持する必要があり、その重要性と厳しさを決して無視してはなりません。
テキストの始まり:
ファイルの読み取りについて少し話します。スタジオ設立初期、経営が慌ただしかった頃、QQの友人から「自社のWebサイトを作りたいという友人がいる」と紹介され、勧められました。これを聞いたとき、私はとても興奮し、すぐに髪を整えてタバコの吸い殻を捨てました。なぜなら、友人が、クライアントが後で私とビデオチャットしたいと言っていたからです(とてもおしゃれですか?)。また、彼は大企業の IT ディレクターであるため、非常に堅苦しく、あまり退廃的にならないように注意する必要があるとも言われています。わざと電気カミソリを取り出して剃りました。
私は、数千ドルもかかるこの種の Web サイトのビジネスがとても好きでした。基本的には、インターフェイスを整えたり、CSS を作成したりしていました。PHP コードは 100 文にも満たなかったのです。初心者を送るだけで1週間で完了しますが、再利用やその後のビジネスの拡大はまったく不可能ですが、1か月分のタバコ、アルコール、お茶が確実に得られます。もちろん、それについては話さなければなりません、初心者に任せてください、基本的に私は夜の屋台で麻辣湯しか食べることができません。
動画が始まると、反対側から声帯の細い穏やかな見た目のイケメン男性が登場しました。丁寧な言葉遣いを交わした後、彼は自分が働いている工場を誇らしげに紹介した。 とても大きな工場だった。開発の規模が速すぎて、速すぎて、Web サイトを作りたくなったのだ。 (大きすぎる関係性) スケールに合わせて、最終的に彼は会社のホームページの構造図を私に送ってくれました。小さなソフトウェアです。彼は最近忙しすぎて、忙しすぎて、あまりにも忙しいので、初めて開発用のインターネット会社を探したいと思ったのです。 会話の終わりに、ハンサムな男性は気さくにこう言いました。彼は「テクノロジーに詳しいですね~」。
冷たい風が吹き抜けていきました〜〜〜。
Excel をクリックしました。Excel でページ構造をこんなに鮮やかに描くことができるのは珍しいです。私は同意を表明し、予定通りに納品できると伝え、同時に Excel をアーティストとプログラマーに送り、納期を 3 日としてもらいました。しかし、そのイケメンさんの要望は、エクセルに写真や文字を直接貼り付けて、エクセルで複数のブックを作成するというものでした(当時はもう混乱していました)。 "ワークブック" を表現するのに $sheet を使用するか shit を使用するか)。ホームページには PHP のページが 1 つだけ必要で、Excel のワークブックはその設定に従って個別に読み込まれます。このように、ユーザーがたまに開くホームページは違います。これは工場のビジネスの「多角化」と革新を多角的に示しています。
ビデオの中のハンサムな男性の誇らしげな笑顔は、私自身の「構成と製品化」の設計思想を大いに疑うものでした。私はこのような異質な考え方を拒否したかったのですが、ハンサムな男性は自分の「コンセプト」を主張し、自分のデザインが工場長から十分に「高く評価されている」と言いました。
イケメンの「振込小切手」の魔力のせいで、私は彼の「設定可能」なアイデアに降参してしまいました。私が言いたいのは、彼はとても素晴らしいということですが、私には大企業の IT ディレクターにはなれないのです。なぜなら、CMS の概念でテンプレートの切り替えを実装するこの方法は本当に思いつかないからです。
もちろん、私は愚か者ではありません (Office ファイルを読み取るのは簡単なことではありません)。私はこの問題を解決するために非常に簡単な方法を使用しました。そして無事に振込み確認をしてもらいました。方法は非常に簡単です。基本的な HTML ページを使用して、イケメンに必要な 5 つの異なるページをデザインし、それらを 5 つの異なる Excel として保存します (注: 保存されたファイルの拡張子は xls ですが、実際には HTML ファイルです)。 )、PHPを使用してそれぞれファイルを表示します。その時のコードは以下の通りです
$fileIndex=rand(1,5); // 1 から 5 の範囲の乱数を取得します
$fileName='index'.$fileIndex.'xls'; // ファイル名を結合します。index1.xls...index5.xls は、Web サイトのルート ディレクトリのインデックスと同じレベルに配置されます。 .php
$getIndex=file_get_contents($fileName) // ファイルを読み取ります、
exit($getIndex); // 読み込んだファイルの内容を出力して表示します
?>
ここにいくつかの知識ポイントがあります:
1.ランド関数
乱数を取得します。パラメータは範囲 rand (最小値、最大値) です。この例では、1 ~ 5 の数値がランダムに生成されます。次に、ファイル名をつなぎ合わせます。 Index1.xls、index2.xls、index3.xls、index4.xls、index5.xls など、イケメン男性用に 5 ページをデザインし、それぞれ 5 つの xls ファイルを保存したことになります。
rand 関数について説明したので、次は知識を広げる必要があります: array_rand 関数 (array--array、前日に詳しく説明したので、ここでは詳しく説明しません)
ファイルをランダムに結合する上記の方法は、次の方法でも使用できます
$file=array("index1.xls","index2.xls","index3.xls","index4.xls","index5.xls");
$fileName='index'.$file[array_rand($file,1)].'xls';
これは、array_rand が受信配列のキー値を返し、2 番目のパラメーターが返されるキーの数を表すことを示しています。 1 の場合は文字または数値変数が返され、1 を超える場合は 2 つのランダムなキー値を含む配列が返されます。
2. file_get_contents 関数
この関数は非常によく使われるファイル内容の読み取り関数でもあるので、覚えておく必要があります。ファイルの内容を一度に読み込み、配列に読み込むことを意味します。
覚えておいてください: 1 回限りです。読み取られている間は邪魔することはできません。途中で止めて別のことをしてほしい場合は、「いいえ」の二言です。
覚えておいてください: 戻り値は文字列である必要があります。
$getFileContent=file_get_contents("index1.xls"); など これはイケメンの要望に応えたという意味です。
この関数のプロトタイプは次のとおりです: file_get_contents(path,include_path,context,start,max_length)
パス: ファイルのパス。「コード」が最終的に実行されるページからのパスを計算することを忘れないでください。ここで、「./」は現在のディレクトリを表し、「../」は上位ディレクトリを表します。 ://www .cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/" これは、N レベルのディレクトリにあることを意味します (自分で数えてください)
include_path: 多くの教科書やオンライン記事には、include_path を使用する場合に 1 を記入する文が含まれています。他には何もありません。模倣品が横行するこの時代、誰もが物事を模倣しすぎていると思います。実際、include_path は設定可能な環境変数です。set_include_path で設定したり、get_include_path で取得したりできます。これは何をするのでしょうか? 実際には非常に単純です。 include_path は、参照またはインデックス作成の便宜のために設定する一連のフォルダー パスです。上記の例で、Web サイトが D:/web/ にデプロイされており、その中にindex.php がある場合、理論的には、index1..index5.xls も D:/web/ に配置されるため、必要なのは次のことだけです。 file_get_contents("index1.xls") を使用してください。それは問題ありませんが、Qingxiu Man がそれを Web サイトのディレクトリではなく、別のディレクトリに置くように要求したとします。
たとえば、c:/ 美しい男の BT ファイル/ の場合、 file_get_contents("c:/ 美しい男の BT ファイル/index1.xls"); と記述してはなりません。理由は非常に簡単です。純粋なプログラム これら 3 つの単語は、将来 Web サイトが Linux に移植された場合、実行されなくなります。
正しい方法はphp.iniを変更することです
include_path = .:c:/Qingxiu Man の BT ファイル:./その他のフォルダー。 Linux に移植して設定ファイルを変更するだけです。
この場合、上記のプログラムは file_get_contents ("index1.
コンテキスト: これは神のようなパラメータです。多くの教科書には、「ストリームの動作を変更できるオプションのセット」と書かれています。この文章は教科書の「資本主義」の概念や、同様の別の「主義」の概念説明よりもさらにわかりにくい。
実はこのパラメータはこんな感じです。 file_get_contents はローカル ファイルだけでなく Web ファイルも読み取ることができます。 www.shenyisyn.org (注: 著者の謙虚なスタジオ Web サイト) のホームページのソース コードを読みたい場合は、http パラメーターなどのいくつかのパラメーターを設定する必要があります:
$オプション = 配列(
'http'=>array(
'method'=>'GET',//GET モードを使用したアクセスを表します
'header'=>'Content-Type:text/html;charset=gb2312'.PHP_EOL.//代表的なエンコーディングは中国語gb2312です
'Cookie:xxxxx'.PHP_EOL //Cookie を使用すると、私の Web サイトを攻撃したい場合、おそらくそれを使用することになります
)
);
$context = stream_context_create($options);
その後、 file_get_contents("www.shenyisyn.org",0,$context"); を使用して直接取得できます。
実際に Web ページのコンテンツを取得するためにこの関数を使用することは推奨されておらず、それを行うために PHP を使用する実際のクローラーやインデックス作成ソフトウェアも存在しないため、ここではこの関数がリモート アドレスを取得するためにどのように使用されるかについてはこれ以上説明しません。 PHP は、PHP デスクトップ ランタイム ライブラリを使用してデスクトップ ソフトウェアを作成しているのを見たときに特に、PHP が最も適していることを許可されるべきです。イエス キリストの研究精神は称賛に値しますが、誰もがそれにあまりにも多くのエネルギーを費やすことは絶対にお勧めしません。研究。時間に余裕があれば、子育てをしながら妻を浮気してもいいし、より実践的で崇高な精神文明の構築を「さらに深化・発展」させるにはどうすればよいかを一緒に話し合うこともできる。
start,max_length: インデックス作成を開始し、最大バイト数を取得します。理解するのは簡単ですが、あまり役に立ちません。
3. PHP_EOL
この知識ポイントはまだ少し重要です。
W N Soft Enter: Windows では、変更されて次の行の先頭に戻ることを意味します。 Linux および Unix では、これは改行を意味するだけで、次の行の先頭には戻りません。
r ソフトスペース:
Linux および Unix では、現在の行の先頭に戻ることを意味します。 Mac OS では、これは行を区切って次の行の先頭に戻ることを意味し、Windows の n の効果に相当します。
tタブ (次の列に移動)
二重引用符または区切り文字で表される文字列では有効ですが、一重引用符で表される文字列では無効です。
rn は通常、キーボードの Enter キーを表すために一緒に使用されます (Linux および Unix)。Mac OS では、r を使用して Enter! を表すこともできます。 t はキーボードの「TAB」キーを表します。
ファイル内の改行記号: Windows: n linux、unix: rn
長い間くだらない話をしてきましたが、将来別のプラットフォームに移植する際の利便性を確保するためにまとめておきます。 r、n、rn の代わりに PHP_EOL を使用する必要があります。PHP は、さまざまなプラットフォームでそれを自動的に解析します。プログラマーは、面倒なタスクをシステムに任せることを学ばなければなりません。混同されやすいこれらのことは覚えないでください。
4. PHP でのファイル処理のためのその他の関数をここに簡単にリストします。一般に、実際のプロジェクトではファイルに対してあまり多くの操作を実行することはめったにないため、一部の関数はあまり使用されません。ここにリストがあります:
file(path,include_path,context) --- ファイルを配列に読み取り、改行に従って分割します。この関数は、txt ファイルの場合、配列に直接読み込むことができるので、改行文字に応じて区切る必要がなく、非常に優れています。
fopen(filename,mode,include_path,context).ファイルを開いてハンドルを返します。ハンドルとは何なのかと疑問に思う人もいるかもしれません
$file=fopen("ファイル名"); この $file がハンドルです。たとえば、私の名前は Shen Yi、私はこのファイル、私の名前はハンドルです。特に意味はありませんが、絡みすぎないように注意してください。そうしないと、夜に何度も起きやすくなります。
(Fwrite (File, String, Length)。ファイル関数を書き込みます。 Du Niang を使用すると、file_put_contents とこの関数の違いを確認できます。
Readfile(filename,include_path,context) この関数はファイルを読み込み、出力バッファに書き込みます。この関数の特徴は、読み込んだファイルのバイト数も出力することです。得意だった頃は file_get_contents 関数として使っていたため、ほとんど使用していませんでしたが、その結果、昼夜問わずページに奇妙な数字が表示され、その手がかりを発見して非常にイライラしました。
filesize はファイル サイズ (バイト数) を返します。この関数は便利ですが、キャッシュされます。なぜ?たとえば、Qingxiu Man のリクエストによると、index1.xls のファイル サイズは 12306KB と計算されました。私が食事を終えている間に Qingxiu Man が手動でデータを追加または削除したとします。 filesize ('index1.xls') を再度実行すると、まだ 12306KB であることがわかります。これはキャッシュです。キャッシュをクリアするには、
などの関数を使用する必要があります。
$size=filesize('index1.xls');
$size をエコー;
…ここのハンサムな男性は、黙って変更を加えに来て、変更を行った後、無責任に家に帰って洗濯して寝ました。 。 。 。
clearstatcache();//キャッシュをクリアする必要があります。
echo filesize('index1.xls'); //以上です、
feof(file) 関数は、ファイルの終わりに達したかどうかを検出します。公式の教科書には、長さが不明なファイルを走査するのに役立つと記載されていますが、これは誤解を招きます。 「不明な長さ」のファイルを操作するために PHP を使用してはなりません。これは PHP が行うべきことではありません。
unlink(filename,context) ファイルを削除します。話すのはやめてください、私が理解できなくてもあなたは理解します。
copy(source,destination) ファイルをコピーします。 1 つだけ覚えておいてください。ファイルが存在しない場合は、存在しません。とにかく、「決定的なものは上書きします」。
mkdir(path,mode,recursive,context) はディレクトリを作成します。これは理解するのが簡単ですが、モード: デフォルトの完全な権限に注意してください。再帰的であるかどうかという再帰もあります。たとえば、1/2/3/4/5 のようなレベルのフォルダーを作成する場合、最も重要なことは、このパラメーターが false の場合、前の 1/ の場合にフォルダー「5」を作成することです。 2/3/ 4 が設定されていない場合、作成は失敗します。 true が設定されている場合は、システムが自動的に 1/2/3/4/ を作成します。
rmdir(パス) フォルダーを削除します。ちなみに、この機能はまだ安全です。フォルダーが空でなくても問題ありません。
まずここまで書きましょう。もちろん、スペースの都合上、その他にも多くのファイル操作関数を追加することはできます。注意して使用する必要があります。上記に不完全、不適切、不十分、またはナンセンスな部分がある場合は、ご理解いただき修正してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477564.html技術記事この号のモットー: データベースが存在しなかった頃、ファイルの読み書きは、私たちプログラマーが誰もいない夜にできる唯一のことでした (必ずしもそうとは限りません~~~)。だから今も…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。