PHP file_exists関数を作成して、任意の拡張子を持つファイルをディレクトリで検索する方法はあります。たとえば、ファイルが「hello」と呼ばれていることを知っていたが、拡張子がわからない場合、hello。*というファイルを検索してこのファイルの名前を返す関数を作成するにはどうすればよいですか?私が知る限り、file_existsは文字列のみを検索します。
ありがとう。
あなたは glob()
関数を探しています。
_file_exists
_は検索を行いません。名前を知っている場合、ファイルが存在するかどうかを知ることしかできません。
そして、PHP> = 5.3では、新しい GlobIterator
を使用できます 。
glob()
の例として、次のコード部分:
_$list = glob('temp*.php');
var_dump($list);
_
私にこの出力を与えます:
_array
0 => string 'temp-2.php' (length=10)
1 => string 'temp.php' (length=8)
_
これは:
_$list = glob('te*-*');
var_dump($list);
_
はい、2つの_*
_;-)
私に与えます:
_array
0 => string 'temp-2.php' (length=10)
1 => string 'test-1.php' (length=10)
2 => string 'test-curl.php' (length=13)
3 => string 'test-phing-1' (length=12)
4 => string 'test-phpdoc' (length=11)
_
PHP5.3以降、 GlobIterator
を使用して、ワイルドカードでディレクトリを検索することもできます。
_$it = iterator_to_array(
new GlobIterator('/some/path/*.pdf', GlobIterator::CURRENT_AS_PATHNAME) );
_
配列のsome/pathにあるすべての.pdfファイルへのフルパスを返します。上記の機能はglob()
とほぼ同じですが、反復子はより強力で拡張可能なAPIを提供します。
File_existsがBOOLEANを返す限り、*を含む検索文字列を受け入れてファイルを検索するこの小さな関数を作成しました...例:
searchForFile("temp*");
function searchForFile($fileToSearchFor){
$numberOfFiles = count(glob($fileToSearchFor));
if($numberOfFiles == 0){ return(FALSE); } else { return(TRUE);}
}
もう少し制御が必要でpre PHP 5.3を使用している場合は、DirectoryIteratorまたはRecursiveDirectoryIteratorを使用できます。どちらも制御と操作を追加するための多くの優れた機能を備えています。
PHPドキュメントは DirectoryIterator および RecursiveDirectoryIterator にあります