CategoryHeader::parse PHP Method

parse() public static method

public static parse ( string $header )
$header string
    public static function parse($header)
    {
        $categories = array();
        if (!empty($header)) {
            foreach (preg_split('/,(?=(?:[^"]*"[^"]*")*[^"]*$)/', $header) as $category) {
                $bits = preg_split('/;(?=(?:[^"]*"[^"]*")*[^"]*$)/', $category);
                $term = trim(array_shift($bits));
                $scheme = '';
                foreach ($bits as $bit) {
                    if (preg_match('/scheme=(.*)/', $bit, $m)) {
                        $scheme = trim($m[1], '"');
                    }
                }
                $categories[$scheme][] = $term;
            }
        }
        return new self($categories);
    }

Usage Example

 /**
  * @dataProvider parseDataProvider
  */
 public function testParse($header, $categories)
 {
     $cats = CategoryHeader::parse($header);
     foreach ($categories as $scheme => $category) {
         $this->assertEquals($category, $cats->get($scheme));
     }
 }