<?php

function array_keypath($array, $path) {
    if(!is_array($path)) {
        $path = preg_split('/[\s\.]*\[([^\]]+)\]\s*|\.+/', $path, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
    }
    
	while(($step = array_shift($path)) !== null) {
		if(!isset($array[$step])) {
			return null;
		}
		
		$array = $array[$step];
	}
	
	return $array;
}
?>

Wat testdata, ter inspiratie:
<?php

$array = array(
	'array' => array(
		42 => array(
			'al fa' => array(
				'beta' => array(
					'gamma' => array(
						'alfa' => 'correct'
					)
				)
			),
			'aalfa' => 'wrong'
		)
	)
);

$path1 = 'array[42]  [al fa] . [beta][gamma][alfa]';
$path2 = 'array.42.al fa.beta.gamma.alfa';
$path3 = 'array[42][al fa] .beta..gamma[alfa]';

var_dump(array_keypath($array, $path1)); // "correct"
var_dump(array_keypath($array, $path2)); // "correct"
var_dump(array_keypath($array, $path3)); // "correct"
?>