addPage((int)$expr); continue; } if (preg_match("/^(\d+)-(\d+)/", $expr, $matches)) { $this->addRange((int)$matches[1], (int)$matches[2]); continue; } throw new Exception("Invalid page number(s) for expression '$expr'"); } } /** * Add a single page */ public function addPage(int $page): void { $this->pages[] = $page; } /** * Add a range of pages */ public function addRange(int $start, int $end): void { $this->pages = array_merge($this->pages, range($start, $end)); } public function getPageNumbers(): array { return $this->pages; } }