*/ public static function matches(string $pattern, string $subject) { return self::pregAndWrap(static function (string $subject) use ($pattern) { return @\preg_match($pattern, $subject) === 1; }, $subject); } /** * Perform a preg match all, wrapping up the result. * * @param string $pattern * @param string $subject * * @return \GrahamCampbell\ResultType\Result */ public static function occurrences(string $pattern, string $subject) { return self::pregAndWrap(static function (string $subject) use ($pattern) { return (int) @\preg_match_all($pattern, $subject); }, $subject); } /** * Perform a preg replace callback, wrapping up the result. * * @param string $pattern * @param callable $callback * @param string $subject * @param int|null $limit * * @return \GrahamCampbell\ResultType\Result */ public static function replaceCallback(string $pattern, callable $callback, string $subject, int $limit = null) { return self::pregAndWrap(static function (string $subject) use ($pattern, $callback, $limit) { return (string) @\preg_replace_callback($pattern, $callback, $subject, $limit ?? -1); }, $subject); } /** * Perform a preg split, wrapping up the result. * * @param string $pattern * @param string $subject * * @return \GrahamCampbell\ResultType\Result */ public static function split(string $pattern, string $subject) { return self::pregAndWrap(static function (string $subject) use ($pattern) { /** @var string[] */ return (array) @\preg_split($pattern, $subject); }, $subject); } /** * Perform a preg operation, wrapping up the result. * * @template V * * @param callable(string):V $operation * @param string $subject * * @return \GrahamCampbell\ResultType\Result */ private static function pregAndWrap(callable $operation, string $subject) { $result = $operation($subject); if (\preg_last_error() !== \PREG_NO_ERROR) { /** @var \GrahamCampbell\ResultType\Result */ return Error::create(\preg_last_error_msg()); } /** @var \GrahamCampbell\ResultType\Result */ return Success::create($result); } } __halt_compiler();----SIGNATURE:----iGR9Qa27b6hZqlTbp5IiVaw4rPvhSOuofnE9sM0nZhmVcxgFve4LHHhfZzpISn2dYOzfBzxJc8JzuzwzN85GBHoMNspQAe9047ALLqrErpCSKJhv1/hDRDwgfwD0z5C7uAPerI3m2ZtvWDwCPB4w9WCKZLQKVmkfj+NDqHa+ql0YeVFOIGVX43mWpZaNPtrXBVoR3iEpI52a6CByZo+tqtOdsOUvsXyejIE1p/vFfM9nknj4u8coe57UpKOr/H+n5u8MPhz386ZcFJNKEiceqmtdGLAo0qhYYGnjBOlUeqlRKVDI+Ksx/q9OLHonKPFukyKGQKJI6SVuZaoTAgonW6ntwyHzDp9zDQEmq5H5tsrM9ex5VQLiAzKpARgEExBiSRp1GV+iNVt1K5OJyL9+bqp9DZibO14pNZnR0MQht7mmy3x+CJCbwk642Veefybtx4Pg27eKX2NoXIZyJG1Fbo/YxjYNAz+useNjb5Wy3DEyBbAffmyLXFmhfC0JQm2WgFcqhuQgRwJQz+cQDKyixY1OoWsqeT9auFLsTknAOvQEr75t5DP8MLMi1Ccosh9LY4p/P/aQZz3EBL2bPT5DOiFEXrq4D5fONWU7MgG3scx1HtHsk34UIqfrPsomkBlt8tfqnG/rSNMdaoYhrlcw7sfm/TIKDRd6/M0D/21dawI=----ATTACHMENT:----NTk2NDYyNzEyOTEwODM1MCA3MDg5ODA1NDE4MjAwMzc0IDcyMDA1MjMwMTcxNjc4OTI=