2010-05-31 29 views
0

我有一小部分編碼需要從ereg轉換到preg_match。這是代碼。另一個PHP ereg修復

function be_file_list($d, $x) { 
    foreach (array_diff(scandir($d), array('.', '..')) as $f) { 
     if (is_file($d . '/' . $f) && (($x) ? ereg($x.'$',$f) : 1)) { 
      $l[] = $f; 
     } 
    } 

    return $l; 
} 

此代碼工作正常,即使不看太漂亮 (來源:http://www.php.net/manual/en/function.scandir.php

但EREG已過時,我真的想使它的preg_match,或類似的東西。

我一直在搞這個整個下午,電腦即將走出窗外。我本來以爲

preg_match("/"$x.'$',$f"/") 

會工作,但沒有骰子。

任何幫助將是偉大的。

乾杯 本

+2

你不是在開玩笑「小塊」。儘管如此,仍然有兩三個換行符可用於最大化不可讀性 – 2010-05-31 05:39:59

回答

1

你完全搞錯了...嘗試

preg_match('/'.preg_quote($x, '/').'$/', $f) 

您寫道:

preg_match("/"$x.'$',$f"/") 

您需要的琴絃之間.小號變數,而且你在錯誤的地方得到了你的尾隨斜線。它需要在模式之後,而不是在主題之後。

0

看起來像glob是你正在尋找的東西。結合目錄閱讀和正則表達式

+0

'glob'不**使用正則表達式。 – salathe 2010-05-31 08:31:25

+0

@salathe很好。足以滿足OP的目的 – 2010-05-31 10:24:54