function parse_opts ($string) { $chars = array(); $breaks = array(" ","\n","\r","\t"); $quotes = array("\"","'"); $currtoken = ""; $tokens = array(); $InQuote = FALSE; $Escaped = FALSE; $chars = strsplit($string); foreach ($chars as $thischar) { if ($InQuote) { if ((!$Escaped) && ($thischar == $InQuote)) { $InQuote = FALSE; } else if ($thischar == "\\") { if ($Escaped) { $currtoken .= $thischar; $Escaped = FALSE; } else { $Escaped = TRUE; } } else { $currtoken .= $thischar; $Escaped = FALSE; } } else if (in_array($thischar,$quotes)) { $InQuote = $thischar; } else if (in_array($thischar,$breaks)) { if (!empty($currtoken)) { $tokens[] = $currtoken; $currtoken = ""; } } else { $currtoken .= $thischar; } } if (!empty($currtoken)) { $tokens[] = $currtoken; } return $tokens; }