Php 如何在regex中识别与根目录匹配的目录级别?
我正在创建一个简单的文件管理器,它扫描目录并列出其中的文件和目录,包括向上的三个点Php 如何在regex中识别与根目录匹配的目录级别?,php,regex,pcre,Php,Regex,Pcre,我正在创建一个简单的文件管理器,它扫描目录并列出其中的文件和目录,包括向上的三个点。/。我的“根”目录是E:/wamp/www,我不希望它允许我访问父目录 我正在使用以下正则表达式: (^E\:\/wamp\/www\/)(\.\.\/$|\.\.\/.*?(\.\.\/)+$)|(^E\:\/wamp\/www\/([^\/]+\/)+)(\.\.\/.*?(\.\.\/)+) 为了防止出现以下情况: E:/wamp/www// E:/wamp/www/dir/。// E:/wamp/www
。/
。我的“根”目录是E:/wamp/www
,我不希望它允许我访问父目录
我正在使用以下正则表达式:
(^E\:\/wamp\/www\/)(\.\.\/$|\.\.\/.*?(\.\.\/)+$)|(^E\:\/wamp\/www\/([^\/]+\/)+)(\.\.\/.*?(\.\.\/)+)
为了防止出现以下情况:
- E:/wamp/www/dir/。/dir//
如何防止这种情况发生,并在发生时使用正则表达式将其限制为仅
E:/wamp/www
?您可以使用realpath()
函数:
从文件中:
realpath()展开所有符号链接,解析对输入路径中/、/../和额外/字符的引用,并返回规范化的绝对路径名
不要仅仅依靠代码来阻止文件在不应该写入的地方写入,请在目录上设置适当的权限。您可以使用
realpath()
函数:
从文件中:
realpath()展开所有符号链接,解析对输入路径中/、/../和额外/字符的引用,并返回规范化的绝对路径名
不要只依靠你的代码来阻止文件在不应该写入的地方写入,在你的目录上设置适当的权限。这是一个好的解决方案,但我担心它可能会阻止访问子目录的父目录,因为如果我理解正确,它会删除所有
。
,此外,我必须为此使用regex。它不会删除。/
,而是解析它们。例如:realpath('C:\xampp\htdocs\dream\images\..\images\..\images\..\dream')
给了我C:\xampp\htdocs\dream
,但你仍然可以这样做:realpath('C:\xampp\htdocs\dream\images\..\images\..\images\..\dream\..\dream\..\dream\')
以及类似的内容否?@user11247237您可以使用此函数的输出并验证它。这是一个很好的解决方案,但我担心它可能会阻止访问子目录的父目录,因为如果我理解正确,它将删除所有。/
,并且我必须为此使用regex。它不会删除。/
,它解决了这些问题。例如:realpath('C:\xampp\htdocs\dream\images\..\images\..\images\..\dream\..\dream')
给了我C:\xampp\htdocs\dream\images\..\images\..\dream\..\dream\\..\dream\..\code>,但是你仍然可以这样做:realpath('C:\xampp\htdocs\dream\images\..\images\..\dream\..\dream\\..\dream\\\\\\..\。