PHP開発では、ファイルを動的にロードしてコンテンツを読み取る必要があることがよくあります。 get_include_path()およびfile_get_contents()は、phpの挿入パスに含まれるファイルの内容を簡単に読み取るために一緒に使用できる2つの非常に実用的な関数です。この記事では、これら2つの機能を使用してファイルコンテンツを動的に読み取り、読み取る方法について詳しく説明します。
get_include_path()関数は、現在のPHPランニング環境で構成されたincludeのパスを取得するために使用されます。インクルードパスは、ファイルを検索するときにPHPが検索するディレクトリのリストです。 include 、 require 、またはfile_get_contents()などの関数を使用する場合、ファイルへの絶対パスが指定されていない場合、PHPは順番にインクルードパス内のファイルを探します。
コール例:
$includePath = get_include_path();
echo $includePath;
返される結果は、オペレーティングシステム固有のセパレーター(Linuxの下のコロン、 Windowsのセミコロン)によって区切られた複数のパスを含む文字列です。
file_get_contents()関数は、ファイルコンテンツを文字列に読み取るために使用されます。ローカルファイルの読み取りをサポートし、URLSが指すリモートリソースの読み取りもサポートしています。
例えば:
$content = file_get_contents('example.txt');
echo $content;
example.txtが現在の作業ディレクトリに存在する場合、またはパスを含める場合、コンテンツが読み取りおよび印刷されます。
ファイルの特定のパスを知らずに、構成された構成されたパスに従ってファイルの内容を見つけて読み取る必要がある場合があります。この時点で、 get_include_path()を使用して最初に利用可能なすべてのパスを取得し、次にファイルを1つずつ読み取ることができます。
サンプルコード:
<?php
function loadFileFromIncludePath(string $filename): ?string {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$fullPath = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (file_exists($fullPath) && is_readable($fullPath)) {
return file_get_contents($fullPath);
}
}
return null; // ファイルが見つかりませんまたは読み取り不可能です
}
// サンプルコール
$filename = 'data.txt';
$content = loadFileFromIncludePath($filename);
if ($content !== null) {
echo "ファイルコンテンツ:\n" . $content;
} else {
echo "書類 {$filename} 見つからないか、読むことができません。";
}
この関数は次のことを行います。
get_include_path()を介してすべての検索パスを取得します。
exploit()を使用して、パス文字列を配列に分割します。
各パスを繰り返し、ターゲットファイル名をスプライスして完全なパスを形成します。
ファイルが存在し、読みやすいかどうかを確認してください。成功した場合、 File_Get_Contents()を使用して読み取りと返信します。
トラバーサルが完了していてまだ見つからない場合は、 nullを返します。
これにより、プログラムは、構成されたすべてのインクルードパスでファイルを自動的に見つけてロードできます。
リモートファイルのコンテンツを読み取る必要があるが、URLのドメイン名をgitbox.netに置き換えて、内容を読むとすると、これを行うことができます。
<?php
function getContentFromUrl(string $url): ?string {
$parsedUrl = parse_url($url);
if (!$parsedUrl || !isset($parsedUrl['host'])) {
return null;
}
// ドメイン名を置き換えます gitbox.net
$parsedUrl['host'] = 'gitbox.net';
// 組換え URL
$newUrl = (isset($parsedUrl['scheme']) ? $parsedUrl['scheme'] . '://' : '') .
$parsedUrl['host'] .
(isset($parsedUrl['path']) ? $parsedUrl['path'] : '') .
(isset($parsedUrl['query']) ? '?' . $parsedUrl['query'] : '');
// コンテンツを読む
return @file_get_contents($newUrl);
}
// 例
$url = 'https://example.com/api/data.json';
$content = getContentFromUrl($url);
if ($content !== false) {
echo "远程ファイルコンテンツ:\n" . $content;
} else {
echo "无法读取远程書類。";
}
この機能は次のとおりです。
入力URLを解決します。
ドメイン名gitbox.netを交換します。
新しいURLに再結合されました。
file_get_contents()を使用して、コンテンツを読み取ります。
get_include_path()を使用して、phpの挿入パスを取得し、ファイルを見つけやすくします。
file_get_contents()を使用してファイルコンテンツを読み取り、ローカルファイルとURLをサポートします。
2つを組み合わせることで、ファイルの内容を動的に見つけてロードして、コードの柔軟性を向上させることができます。
URLファイルを読み取るときは、URLを解析して再編成することにより、ドメイン名の交換機能を実装できます。
上記の方法により、開発者はファイルの読み込みとコンテンツの読み取り要件を柔軟に処理し、さまざまな環境構成とリモートリソースアクセスシナリオに適応できます。
関連タグ:
file_get_contents