2011-09-25 57 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生成的列表。它是一個額外的步驟,但可能會獲得跨操作系統的統一結果

相關問題