*/ 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:----BeWLkQB/2JLktxjvgW2bCHY9Jjrz4Qf7oVPmsKZBSIkGH0RA8XgGolqc2/1fDGX0rya0ysR530wVcvOZKQAfZWmh2XMQviEWXxZBojI2evZLG8WuyvSSXD89O9BSXyqQHabvZG7j3Ehvc2l6tzCBFUn+UgPCLHyhrFoKlEP4qz8N2EnNOK2YLapv6/WsN/nvm7Wmv2zRvyjAUiJ1Gh4UsAtXzJjOx4LcGBuet5NnwK4EpNL5la1CUHu69StlWjo1EF4oXVExrQX/rPVFdJnYOHxbe4uWIHnb8RmkMXpKiP23djJLJGr7hx2c0aQnPU3jXhCdv3VIJ4CWt5hlrRGIQzJ+u3W99dQpeKC5x9wG4HY4mHxZY/o0USKeVGz91U4IBXwVAoxWDbvRiRX3S9EWLtNU/3aC58z+IcvMRa/KQ9rJ7J9kEBWBISRk+nJxhDzw5z90rCdu0L3gFQqzgz9oo4EuD1h0TXVcM38rEvTe73iLbkcK6rYx4agB3VnVNeQB8ROl0f20tdRYel4XCOi8Z5kEiBKmZwlO3adrfTIEeyYctkAHuZMQpgB5GjE90n9COG2N85efkvS04yNIY4rFCXawAuOBAp585DMgqh6kGEHX8qCbs/CJL+b693OtNa+XQgMrvcsxSLxD7c8LwKPYGVYANo8DEE/FlfF5uLl5ee0=----ATTACHMENT:----NDM5MDAxMDc0ODgwMjkwOCA2NzM1NzUzMzkzNjExMjc1IDIzNjIzMjg2MTEwMTA0Nzc=