[PHP 学習 100 日おめでとう] 3 日目: 手に負えない PHP ファイル操作
今回のモットー:
データベースが存在しなかったとき、ファイルの読み取りと書き込みは、プログラマーが誰もいない夜に実行できる唯一の作業の 1 つでした (必ずしもそうとは限りません~~~)。したがって、このテクノロジーが現在どれほどシンプルで高速で一般的になったとしても、私たちは依然として細心の注意を払う姿勢と厳格な倫理を維持する必要があり、その重要性と厳しさを決して無視してはなりません。
テキストの開始:
ファイルの読み取りについて少し話があります。スタジオ設立当初、経営が慌ただしかった頃、QQの友人から「自社のWebサイトを作りたいという友人がいる」と紹介され、勧められました。これを聞いたとき、私はとても興奮し、すぐに髪を整えてタバコの吸い殻を捨てました。なぜなら、友人がクライアントが後で私とビデオチャットしたいと言っていたからです(とてもおしゃれですか?)。また、彼は大企業の IT ディレクターであるため、非常に堅苦しく、あまり退廃的にならないように注意する必要があるとも言われています。わざと電気カミソリを取り出して剃りました。
私はこの種の何千ドルもかかるウェブサイトのビジネスがとても好きでした。基本的にはインターフェイスを整えて 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 サイトのルート ディレクトリに配置され、index.php になります。同レベル
$getIndex=file_get_contents($fileName); //ファイルを読み取ります、
exit($getIndex); //読み込んだファイルの内容を出力して表示します
?>
以下にいくつかの知識ポイントを示します:
1. rand 関数
範囲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 回限りです。読み取られている間は邪魔することはできません。途中で停止して別のことをしたい場合は、「いいえ」の 2 つが必要です。
覚えておいてください: 戻り値は文字列である必要があります。
$getFileContent=file_get_contents("index1.xls"); など これは、イケメンのリクエストを満たしたことを示しています。
この関数のプロトタイプは次のとおりです: file_get_contents(path,include_path,context,start,max_length)
パス: 「コード」が最終的に実行されるページからのパスを忘れずに計算してください。ここで、「./」は現在のディレクトリを表し、「../」は上位ディレクトリを表します。 "http://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"); という文言は、Web サイトを Linux に移植する場合には非常に悲惨です。将来的には実行されなくなります。
正しい方法は、php.ini
を変更することです。
include_path = .:c:/Qingxiu Man の BT ファイル:./その他のフォルダー。 Linux に移植して設定ファイルを変更するだけです。
この場合、上記のプログラムは file_get_contents ("index1. .
context: これは神のようなパラメータです。多くの教科書には、「ストリームの動作を変更できるオプションのセット」と書かれています。この文章は教科書の「資本主義」の概念や、同様の別の「主義」の概念説明よりもさらにわかりにくい。
実はこのパラメータはこんな感じです。 file_get_contents はローカル ファイルだけでなく Web ファイルも読み取ることができます。たとえば、www.shenyisyn.org (注: 著者の謙虚なスタジオ Web サイト) のホームページのソース コードを読みたい場合は、http パラメータ :<🎜 などのいくつかのパラメータを設定する必要があります。 >
$options = array(
'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
この知識ポイントはまだ少し重要です。
ソフトリターン: 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=fopen("ファイル名"); この $file がハンドルです。たとえば、私の名前は Shen Yi、私はこのファイル、私の名前はハンドルです。特に意味はありませんが、絡みすぎないように注意してください。そうしないと、夜に何度も起きやすくなります。
$size=filesize('index1.xls');
echo $size;
……ここのハンサムな男は黙って変更を加えに来たが、変更を行った後、無責任に家に帰って洗濯して寝た。 。 。 。
clearstatcache();//キャッシュをクリアする必要があります。
echo filesize('index1.xls'); //そうです、
まずここまで書きましょう。もちろん、スペースの都合上、すべてをリストすることはできません。ストーリーや特性を含めて、ファイル操作関数を追加してください。そしてそれは注意して使用する必要があります。上記に不完全、不適切、不十分、またはナンセンスな部分がある場合は、ご理解の上、修正してください。