Преобразовать из строки в удвоение от 4325 до 43,25 [закрыто]

Я отвечаю здесь, если кто-то еще выглядит так, как это кажется высоким в Google.

Решение 1 - только glob

Это использует глобус, который предназначен для пропуска. ' и ".." специальные каталоги. Он соответствует любому, что:

  • не скрыто с символом '.'
  • , спрятанным символом '.' но следует за не. символ
  • начинается с «..», но после него имеет по крайней мере один символ
$globbed = glob("{*,.[!.]*,..?*}", GLOB_BRACE);
var_dump($globbed);

Решение 2 - globignore

Это функции для имитации поведения globignore в bash .

function globignore(array $ignore, $glob, $glob_flags = 0)
{
    $globbed = glob($glob, $glob_flags);
    return array_filter($globbed, function ($f) use ($ignore)
    {
        $base = basename($f);
        foreach($ignore as $i)
        {
            if ($i == $base) return false;
        }
        return true;
    });
}
$globbed = globignore(['.','..'], "{*,.*}", GLOB_BRACE);
var_dump($globbed);

Кажется, что они выполняются почти точно в то же время в моей системе. Решение 1 требует меньше кода, но решение 2 проще включать больше терминов для игнорирования.

-11
задан PawelC 18 May 2019 в 19:09
поделиться