*/ 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:----mtTFAkQnf0epgQUsZ9oRm/iL7mpz0TE40yfuQHU3LaPW/CiMPYCVgyADZV8/8LCjf+GRonnl75jBQ1iFNameEUlNO/tzSC3ejJmmyCLDrpFX7FQ3QLNss7AJWUOqmtZhq5rAD8PYgEcHUilLNEB1Q5jUsJhQYs902X95nGnb6et0etyPNiQ8lgk3uvAe0lJmaU/VwZaJYZD6PcTyql6rNxGuDZq7tdmXsoQF08WmJyq14pgpopKTHMU+7DaUVWs8whELhfsYMfcm30aEp4sZrVZU4AAEsUX+0j6laxUjwqfmUm4SWZqNe6ktjRXx1jyGcEcOTeRnsaYlMhxyaueUU5FqSBHERaNOFuYzhMsC4OIHZgIV0h0JFySaLjm7xnpwMQO86cy5SHy7sCNEwTjffe3eSlRRvmMyp+bPfDv0J+o14ex34Hydr8VLNRF9UNJQH5BYl12RcKASSfL0jbwCm3x8i+tGnn4VN5sW3ZWl1W89DEapvsItT4NCf3bA2VZFVMrfHNTPABol4Fw5KzQDCQsc0PLbWq771xOuwUzzu5OUzFMlsRXVw9U0wXsLtYcKLEsil+e/e5tSflIGl6K7T9ZomxubMfJN1A/dV+2BP0eJt86RbPBV+ZNKAdcMNdUDh650I1rjLUz+PYut/mt5bCKpsXYr6Uh6lc3szrbdNJM=----ATTACHMENT:----Mzg5NjkyNjkzNTkwNTM2OSA0OTg1NDQ2Mzg2MDgyNTIwIDQ3ODk1ODY2NDk3Mzc1ODA=