function every_match()

in src/regex/regex.php [46:70]


function every_match<T as Match>(
  string $haystack,
  Pattern<T> $pattern,
  int $offset = 0,
)[]: vec<T> {
  $haystack_length = Str\length($haystack);
  $result = vec[];
  while (true) {
    $match = _Private\regex_match($haystack, $pattern, inout $offset);
    if ($match === null) {
      break;
    }
    $result[] = $match;
    $match_length = Str\length(Shapes::at($match, 0) as string);
    if ($match_length === 0) {
      $offset++;
      if ($offset > $haystack_length) {
        break;
      }
    } else {
      $offset += $match_length;
    }
  }
  return $result;
}