array(7) { [0]=> string(5) ""Nick" [1]=> string(4) "Cave" [2]=> string(3) "and" [3]=> string(4) "the"" [4]=> string(4) ""bad" [5]=> string(6) "seeds"" [6]=> string(3) "dig" } array(2) { [0]=> string(24) "artist:"Michael Jackson"" [1]=> string(10) "title:wall" } array(3) { [0]=> string(32) "title:"sleep through the static"" [1]=> string(4) "jack" [2]=> string(7) "Johnson" } array(4) { [0]=> string(9) "format:CD" [1]=> string(6) "Sheryl" [2]=> string(4) "crow" [3]=> string(13) "title:Detours" } <?php

        
# array("general"=>array("Nick Cave and the","bad seeds", "dig")
        
$s1 '"Nick Cave and the" "bad seeds" dig';

        
# array("artist"=>"Michael Jackson", "title"=>"wall")
        
$s2 'artist:"Michael Jackson" title:wall';

        
# array("title"=>"sleep through the static", "general"=>array("jack","Johnson")
        
$s3 'title:"sleep through the static" jack Johnson';

        
# array("format"=>" CD ", "title"=>"Detours","general"=>array("Sheryl","crow")
        
$s4 'format:CD  Sheryl crow title:Detours';

        function 
parseOut($string)
        {
                
# $pattern = '#(?<!\\\)"(.*)(?<!\\\)"#U';
                
$pattern '/(\w+):(?:"([^"]+)"|(\S+))|(\S+)/';
                
$a preg_match_all($pattern$string$matches);

                return 
$matches[0];
        }

        
var_dump(parseOut($s1));

        
var_dump(parseOut($s2));

        
var_dump(parseOut($s3));

        
var_dump(parseOut($s4));

    
show_source(__FILE__);
?>