简单快速:
echo eval('return $'. $string . ';');
当然,需要先对输入字符串进行清理。
如果你不喜欢快速和肮脏...那么这也将起作用,它不需要eval,即使我也会畏缩。
但是,它确实对字符串格式进行了假设:
<?php
$data['response'] = array(
'url' => 'http://www.testing.com'
);
function extract_data($string) {
global $data;
$found_matches = preg_match_all('/\[\"([a-z]+)\"\]/', $string, $matches);
if (!$found_matches) {
return null;
}
$current_data = $data;
foreach ($matches[1] as $name) {
if (key_exists($name, $current_data)) {
$current_data = $current_data[$name];
} else {
return null;
}
}
return $current_data;
}
echo extract_data('data["response"]["url"]');
?>