Еще одно исправление PHP - PullRequest
0 голосов
/ 31 мая 2010

У меня есть небольшой кусок кода, который мне нужно взять от 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 или что-то в этом роде.

Я возился с этим весь день, и ПК вот-вот выйдет в окно. Я бы подумал, что

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

работало бы, но не играло в кости.

Любая помощь будет отличной.

Приветствие Бен

Ответы [ 2 ]

1 голос
/ 31 мая 2010

Вы все неправильно поняли ... попробуйте

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

Вы писали:

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

Вам нужно . s между строками и переменными, и вы получили свой косой черты в неправильном месте. Это должно быть после шаблона, а не после объекта.

0 голосов
/ 31 мая 2010

Похоже, glob это то, что вы ищете. Объединение чтения из каталога и регулярных выражений

...