Еще одно исправление PHP

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

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

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

Вы написали:

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

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

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

Другие вопросы по тегам