为了简短起见,我编写了一个访问控制系统。
该系统的要求之一是通过将其与模式匹配来检查是否可以访问规范/规范化路径。
首先想到的是 PREG,问题是,模式是基于文件的,即类似于glob()
. 基本上,它只是包含?
(匹配一个任意字符)或*
(匹配任何字符)的模式。
所以简单来说,我需要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
成一个正则表达式而不是 use preg_match()
,还有其他方法吗?
注意:我不能使用正则表达式的原因是模式将由非程序员编写。