*/ 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:----n08oKrNU5CQLFZ6mSRRFe1zO/lCV4s4I5+Cf23P4zlyr9iLA+emEbtTkt+55Kizc0F3FcQeJPoPXAqBzZo2AtQbJfMoUr5E9x6eZPltV4w9e+Y7sH6iDWxPmYBO4SmFHAgny8n32+W/ajolYQdXkNOP2vD2xBUWb4jAYEmvrHglP09T1Ymelt1Rw+mSBuyrmClpv1vltxK3qT0Kp9E0jDGQqVmMpU2BOY731H5BihLDv9G8WA2N2r7La157l+O/1jBAMeZinhewkl6jFLrRKnMIJWYSp+a0MufbGhvKx6Sl1nXgugiP8VUonzrBNUOICdxP2QXTw8UkAQO9YKqDPAn21enBRpmRvVMBtNDjA8M/fhN/hxWMV1qGIhvhbMR52XPF51KAhebFVAa7s2WMyB9WTWsDT4w98oBc8RCLB/n5ATRDnuabS4MKuMzNaHnm/lwjCpJ8HdaPsy2Tw87ObqC08ky3qBWRcYrp+ebSz2H4kOSZNZodtO5pc9cAs20Y9TnuMwLI06dJLov7TbyDInvOOJJHo98WSYS5pgU8wZjJhNy0hH9F6VtP7b5sGtRxASXnVORkatrNRMwEOhp34pHa1RzzN3ZvtwUoQz00VqTYkaLoWqY5k7apFqlySuGpSEcgAPrGWsP4bFeQQQSBAZHl1CuXysFOj6LKdK4a7CEo=----ATTACHMENT:----NDc2MjU2NDg2NzQyMjAwMyA3MzY0MDI4Nzg4MzEyMzQ3IDE4Njg0OTI3NjMwMzA4ODI=