prova questo script:
codice:
function buildArray(&$values, $select, $from, $join, $where, $group, $order){
	if ($select!='')$values['SELECT']=$select;
	if ($from!='')$values['FROM']=$from;
	if ($join!='')$values['JOIN']=$join;
	if ($where!='')$values['WHERE']=$where;
	if ($group!='')$values['GROUP_BY']=$group;
	if ($order!='')$values['ORDER_BY']=$order;
	return true;
}

$query = "SELECT fieldnames FROM tablename INNER JOIN bla bla ON fielname=fielname WHERE fieldname = 'value'  ORDER BY fieldname";


$rex = '/^SELECT(.*?)FROM(.*?)((?:INNER|CROSS|NATURAL|LEFT|RIGHT).*?)?(?:WHERE(.*?))?(?:GROUP\s+BY(.*?))?(?:ORDER\s+BY(.*?))?$/ise';
$rpl = 'buildArray($parsedQuery,\\'$1\\', \\'$2\\', \\'$3\\', \\'$4\\', \\'$5\\', \\'$6\\');';



$parsedQuery=array();
preg_replace($rex,$rpl,$query);



echo '<pre>';
print_r($parsedQuery);
echo '</pre>';