簡単に言うと、私はアクセス制御システムを書きました。
このシステムの要件の 1 つは、正規化/正規化されたパスにアクセスできるかどうかをパターンと照合してチェックすることです。
最初に考えられるのは PREG です。問題は、パターンがファイルベースであることです。つまり、glob()
. 基本的には、?
(任意の 1 文字に一致) または*
(任意の文字に一致) を含むパターンだけです。
簡単に言えば、glob()
PHP で の一致する機能を再作成する必要があります。
サンプルコード:
function path_matches($path, $pattern){
// ... ?
}
path_matches('path/index.php', 'path/*'); // true
path_matches('path2/', 'path/*'); // false
path_matches('path2/test.php', 'path2/*.php'); // true
$pattern
考えられる解決策は、を使用するよりも正規表現に変換することpreg_match()
ですが、他に方法はありますか?
注:正規表現を使用できない理由は、パターンが非プログラマーによって記述されるためです。