简言之,我编写了一个访问控制系统。
该系统的要求之一是通过将规范化/归一化路径与模式进行匹配来检查是否可以访问。
首先想到的是PREG,但问题在于这些模式是基于文件的,即类似于glob()
所接受的模式。基本上,它们只是包含?
(匹配一个任意字符)或*
(匹配任何字符)的模式。
因此,简单来说,我需要在PHP上重新创建 glob()
的匹配功能。
示例代码:
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()
,但还有其他方法吗?
NB:我不能使用正则表达式的原因是模式将由非程序员编写。
glob()
與實際路徑一起使用,我需要重新創建其模式匹配功能。我不知道如何在我的情況下使用glob()
(對不存在的路徑)。 - Christian