/** * 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); } }