> */ private $styles = []; public function __construct(string $cssContent) { $this->cssContent = $cssContent; } public function process(): void { $cssContent = str_replace(["\r", "\n"], '', $this->cssContent); preg_match_all('/(.+?)\s?\{\s?(.+?)\s?\}/', $cssContent, $cssExtracted); // Check the number of extracted if (count($cssExtracted) != 3) { return; } // Check if there are x selectors and x rules if (count($cssExtracted[1]) != count($cssExtracted[2])) { return; } foreach ($cssExtracted[1] as $key => $selector) { $rules = trim($cssExtracted[2][$key]); $rules = explode(';', $rules); foreach ($rules as $rule) { if (empty($rule)) { continue; } [$key, $value] = explode(':', trim($rule)); $this->styles[$this->sanitize($selector)][$this->sanitize($key)] = $this->sanitize($value); } } } public function getStyles(): array { return $this->styles; } public function getStyle(string $selector): array { $selector = $this->sanitize($selector); return $this->styles[$selector] ?? []; } private function sanitize(string $value): string { return addslashes(trim($value)); } }