2011-09-25 61 views
0

我想以数字或字母开头,只选择文件:不同的水珠()结果服务器(Windows VS Linux的)

$files = glob($xsl_dir_path . "/[^a-zA-Z0-9]*.xsl"); 
$files = array_map('basename', $files); 

有3个文件:a.xsl, b.xsl,_functions.xsl。我不想选择_functions.xsl文件。

  • 结果:本地(Windows)中:a.xsl,b.xsl
  • 结果:服务器(Linux)的:_function.xsl

回答

0

你是否定的赛课,尝试:

$files = glob($xsl_dir_path . "/[a-zA-Z0-9]*.xsl"); 
$files = array_map('basename', $files); 
+0

另请注意,句号必须转义,并且正则表达式不会匹配文件名中包含非字母数字字符*任意位置*的文件。 – Kaivosukeltaja

+0

@Kaivosukeltaja不,我不认为你需要逃避这个点。至于匹配文件名中包含非字母数字字符*的任何位置*的文件,这不完全正确。它不会匹配那些在开始时不包含字母数字字符的文件,但它将与包含文件名中其他任何位置的任何非字母数字字符的文件相匹配。看起来,这是OP想要实现的目标。 – Shef

+0

这工作,但并没有解释为什么我在Windows/Linux中得到两个不同的结果... – gremo

1

* 编辑(再)*

我的坏,glob可能没有正则表达式作为模式匹配。
这不会工作,那么:(?<![^/])[a-zA-Z0-9][^/]*\.xsl$
(只是无论是/或字符串的begining preceeded的filename.xsl相匹配。)

然而,对于更多的控制,使用的glob '*。*' 或东西宽泛,然后使用上面的正则表达式过滤glob生成的列表。它是一个额外的步骤,但可能会获得跨操作系统的统一结果

相关问题