另一个php ereg修复程序

另一个php ereg修复程序,php,pcre,posix-ere,Php,Pcre,Posix Ere,我有一小段代码需要从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; } } r

我有一小段代码需要从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;
}
这段代码按预期工作,即使看起来不太漂亮 (来源:)

但由于ereg不受欢迎,我真的很想让它成为preg_match,或者类似的东西

我整个下午都在搞这个,电脑就要出窗外了。我本以为

preg_match("/"$x.'$',$f"/")
如果不是掷骰子的话,我会成功的

任何帮助都会很好

干杯

你全搞错了。。。试一试

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

你写道:

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

在字符串和变量之间需要
s,并且尾部斜杠的位置不正确。它需要在模式之后,而不是在主题之后

看起来就是你要找的东西。将目录读取和正则表达式结合起来

你不是在开“小块”的玩笑。不过,为了最大限度地提高不可读性,还有两三条换行符可以去掉。
glob
不使用正则表达式。足够了