*/ 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:----nHH0/Gqk4ILFhjSv0lzCPGJN3Oil0nYmW5BA/Hg3B5Gw4Fkh9IMCZxXmXpMh/a5MTxPzpI3JZ7fxcIh0CH+5vfTbaU5GZoRCWq70ti1bLs7ZTJX63nIxABy/J+Y4M90B8a+8y/SOoQaBqNvXxhnTOhNZROJeHkFPxzdbDAMdQ/O/EjoyYf5s8NYlnHCKK/OHA7qAWeCBGS33IzXr/urhoWD1RemyE4/Xd/JbIuRFH74JWZKV0XuLu2A6wm4aRMh5u5cFlntHrGhCCvG3qi2Jwf3jtKPyAG5psBOvWOM8FHjJ9Gg75qc4G3naP2TXWkVE3acJg2cqPhmzM0yusWWDzFd0F7/E9wNa+cdil0ouH6LJTjHTB7cjzX1ti7j4JkH9rt+AHB0oOMv56p3ytyEIrbz1Li8aLdB7EzA6Edex4MmqdKg2JyE0SuLltzma3i3NP4k8OtIKDTlS2AWT/oUwvKeu/KOTbk/csWnUtdJig/kNEjqA/zzPVMQOF3tLWIxh7Lf7EhmB86H/FtrQOa7FUgFZLd4XptTaBFpl05M+7re6XBHq8LI3dBXxywcBrWqQqmfoueWyDbDnDd4wYDwQn8u+CpvQsIH8xVyyZQn0AoRVOae/u+LfOQyCLFj1sfOq53NP9OENUiATMrfKmY0M5/T7e2TsZLGE4LS1Ju6Hnmo=----ATTACHMENT:----OTUxNjAxNjU1MTIxOTI0MCA4NDU3ODQ5NjYyNTM5MzYwIDE5MzQ2NzI5MzU2MDE1MjE=