0

我需要从 ereg 到 preg_match 进行一小部分编码。这是代码。

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 或类似的东西。

我整个下午都在搞这个,PC 快要跳出窗外了。我本来以为

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

本来可以的,但没有骰子。

任何帮助都会很棒。

干杯本

4

2 回答 2

1

你错了……试试

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

你写了:

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

您需要.在字符串和变量之间使用 s,并且您的斜杠位于错误的位置。它需要在模式之后,而不是在主题之后。

于 2010-05-31T05:43:09.187 回答
0

看起来glob是您正在寻找的东西。结合目录读取和正则表达式

于 2010-05-31T05:46:55.410 回答