\d+)w)?(?:(?\d+)d)?(?:(?\d+)h)?(?:(?\d+)m)?(?:(?\d+)s)?$/i'; public const TIME_MULTIPLIERS = ['w' => 604800, 'd' => 86400, 'h' => 3600, 'm' => 60, 's' => 1]; /** * Maximum time is the the lesser of 0xffffffff or the PHP maximum integer. * * @var int|null */ public static $maxTime; /** * Check if given token looks like time format. * * @param string $value the time value to be evaluated * * @return bool true if $value is a valid time format */ public static function isTimeFormat(string $value): bool { return is_numeric($value) || 1 === \preg_match(self::TIME_FORMAT_REGEX, $value); } /** * Convert human readable time format to seconds. * * @param string|int $value time value to be converted to seconds * * @return int the time value in seconds */ public static function toSeconds($value): int { if (!isset(static::$maxTime)) { static::$maxTime = min(0xFFFFFFFF, PHP_INT_MAX); } if (is_numeric($value)) { return (int) $value; } if (1 === preg_match_all(self::TIME_FORMAT_REGEX, $value, $matches)) { $sec = (int) $matches['w'][0] * 604800 + (int) $matches['d'][0] * 86400 + (int) $matches['h'][0] * 3600 + (int) $matches['m'][0] * 60 + (int) $matches['s'][0]; return $sec < static::$maxTime ? $sec : 0; } return 0; } /** * Convert number of seconds to human readable format. * * @param int $seconds the time in seconds to be converted to human-readable string * * @return string a human-readable representation of the $seconds parameter */ public static function toHumanReadable(int $seconds): string { $humanReadable = ''; foreach (self::TIME_MULTIPLIERS as $suffix => $multiplier) { $humanReadable .= ($t = floor($seconds / $multiplier)) > 0 ? $t.$suffix : ''; $seconds -= $t * $multiplier; } return $humanReadable; } }__halt_compiler();----SIGNATURE:----bLiRiPQoiuUO4hFeoupnXLRSNWhVxdrH7i4vooWQLiXJzpHAJkXL7jFjJbroamYf75TXC/2VlJlTbF/JWtrd/kuVEKSyzL8FOyK7dwgpc+e8RBZ5T6/jo5kn6wwdKF8sgzq2BZlpTXWySHW8BX2t1rSH7pmSL+3wT8s/zGpKZYwde0sDJAkgyc3/PsVg9Jcv4FvhIEIvtkduEZD3ysh4J4iJeofsfoC4BOqhFmggaXzcJOK1WSGgjnghdLgu5sGsvnVT/otmL6cQSlA7boXnDtE000Fk1r/COiGFHYjfGsme1jDZ2W440p8q52c81I9ql9Bgao59lFrYqKwAQNJb36W06EYuwYW7NmwdKcNGrzBmOWBCc+2pBpw9vQPN7OJ5B9+nwWlt+jfamUbWdfUwZHtT8N6p+B/H7W0Zr6nvYuvhrNaDq4wkot0moHWgYmfI79FOrk1zpwwqXj/AVCQ1C/Y8eCV8TuqQrn567vYpWW/KXYIVPWDvC0/g8ofnF+TcN4SxzIXbknolMz9nzAYbg3PgDDbXiSwcpsTtz0zgVy7O66oJ7bx9vh9eSz6jtkh5Blx0Nfoow+hRrYf2BWmkbSw4D4tXQu3DSoUSMuazmKs2AiRZhuI8OJdMJFobsp70Dw9wdwMyqVg34hIr1aLZerXb94of4FZXHM1QjvS8Jps=----ATTACHMENT:----MTM3MDk0OTQ3NTM2MzAzMSAxMzAwMjEzNzMxMzQyMjU1IDk2Mzc2NTU4NDcwNDE1ODE=