【发布时间】:2010-05-03 06:09:39
【问题描述】:
有人可以帮我解决这个问题preg_match
if (preg_match('~[^A-Za-z0-9_\./\]~', $filepath))
// Show Error message.
我需要匹配一个可能的文件路径。所以我需要检查双斜杠等。有效的文件路径字符串应该看起来像这样:
mydir/aFile.php
或
mydir/another_dir/anyfile.js
因此,还应检查该字符串开头的斜线。请帮忙。
谢谢:)
编辑: 另外,伙计们,正在从文本文件中读取此路径。它不是系统上的文件路径。所以希望在这种情况下它应该能够支持所有系统。
重新编辑:
抱歉,字符串也可以是这样的:
myfile.php,或myfile.js,或myfile.anything
我如何也允许这样的字符串?我很抱歉之前没有具体说明这一点......
【问题讨论】:
-
只有你显示的两个示例路径应该匹配?
-
任何文件扩展名都应该匹配。字符串前面不能有任何斜线,字符串末尾不能有任何斜线。这是它的唯一限制,它必须是字符 A-Z、a-z、0-9,或者其中包含和下划线或点。就是这样。
-
路径应该对哪些文件系统有效?
-
所有,如果可能的话。否则,大多数。
-
@SoLoGHoST:有数十种不同的文件系统,并且都有不同的规范(参见en.wikipedia.org/wiki/Comparison_of_file_systems)。这些规范的联合可能只是文件名
[A-Z0-9]{1,8}(MS-DOS 只允许 8 字节)和路径长度的总长度 30 字节(Apple DOS 3.x 只允许 30 字节)。跨度>
标签: php regex preg-match