判断方式 将规则以字符串形式扔进parse_crontab方法中,到时间了就true,不符合就false

function parse_crontab(string $frequency='* * * * * *') : bool
{
    $time    = explode(' ', date('s i G j n w'));
    $crontab = explode(' ', $frequency);
    $run = true;
    foreach($crontab as $k => $v)
    {
        if($v == '*') continue;
        $ss = explode(',', $v);
        foreach($ss as $s)
        {
            if($s == '*') continue;
            if(preg_match('/^(\d+)$/', $s))
            {
                if($time[$k] != $s)
                {
                    $run = false;
                    break;
                }
            }
            if(strpos($s, '-') !== false)
            {
                [$min, $max] = explode('-', $s);
                if($time[$k] < $min || $time[$k] > $max)
                {
                    $run = false;
                    break;
                }
            }
            if(strpos($s, '/') !== false)
            {
                $d = str_replace('*/', '', $s);
                if($time[$k] % $d !== 0)
                {
                    $run = false;
                    break;
                }
            }
        }
        if(!$run) break;
    }
    return $run;
}