Еще одно исправление 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"/")
Тебе нужно .
между строками и переменными, и вы получили свой косой черты в неправильном месте. Это должно быть после шаблона, а не после объекта.
Похоже, шарик это то, что вы ищете. Объединение чтения каталога и регулярных выражений