2

アップロードされたファイルのパスをphpで検証しようとしています。これは、ネイティブ関数ではなく正規表現で検証する必要があります。

私が得ているパスは次のとおりです。

C:\xampp\tmp\php33DB.tmp

したがって、このパスをテストすると/^[a-zA-Z0-9\-\_:\\]*\Z/falseが返されます(パスにバックスラッシュがあるためだと思います\

正規表現のみを使用してPHPにアップロードされたファイルのLinuxおよびWindowsサーバーのパスを検証する方法はありますか?

4

2 に答える 2

3
$text = 'C:\xampp\tmp\php33DB.tmp';
preg_match("#^[a-zA-Z0-9_\\\\:.-]+#",$text,$out);
print_r($out);

出力:

Array ( [0] => C:\xampp\tmp\php33DB.tmp )

ただし、このファイルはPHPアップロードによって作成された一時ファイルであり、クライアントではなくサーバーによって作成されたため、検証する必要はないと思います。アップロードされたファイルのmimeタイプを確認し、ファイルがアップロードされたかどうかをis_uploaded_file()で確認できます。 HTTPPostによる。

于 2013-03-24T19:33:25.993 に答える
0

代わりにこの関数を使用することをお勧めします。file_exists

したがって、コードで次のことができます。

if (file_exists($tmpFile)) {
    // ... do stuff
}
于 2013-03-24T19:39:22.553 に答える