/**
  * Explodes a string as explode() does, however, not if $sep is escaped or within a string.
  * @param string $sep seperator
  * @param string $string
  * @return array
  * @version 1.0
  */
 public function explode_ws($sep, $string)
 {
     $status = 'st';
     $to = '';
     $output = array();
     $num = 0;
     for ($i = 0, $len = strlen($string); $i < $len; $i++) {
         switch ($status) {
             case 'st':
                 if ($string[$i] == $sep && !Diglin_Csstidy_Core::escaped($string, $i)) {
                     ++$num;
                 } elseif ($string[$i] == '"' || $string[$i] == '\'' || $string[$i] == '(' && !Diglin_Csstidy_Core::escaped($string, $i)) {
                     $status = 'str';
                     $to = $string[$i] == '(' ? ')' : $string[$i];
                     isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                 } else {
                     isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                 }
                 break;
             case 'str':
                 if ($string[$i] == $to && !Diglin_Csstidy_Core::escaped($string, $i)) {
                     $status = 'st';
                 }
                 isset($output[$num]) ? $output[$num] .= $string[$i] : ($output[$num] = $string[$i]);
                 break;
         }
     }
     if (isset($output[0])) {
         return $output;
     } else {
         return array($output);
     }
 }