Быстрый и грязный:
echo eval('return , Конечно, входная строка должна была бы быть быть санированной сначала.
, Если Вам не нравится быстрый и грязный... затем, это будет работать также, и это не требует оценки, которая заставляет даже меня съежиться.
Это действительно, однако, делает предположения о формате строки:
<?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"]');
?>
. $string . ';');
, Конечно, входная строка должна была бы быть быть санированной сначала.
, Если Вам не нравится быстрый и грязный... затем, это будет работать также, и это не требует оценки, которая заставляет даже меня съежиться.
Это действительно, однако, делает предположения о формате строки:
<?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"]');
?>
PHP's переменные переменные поможет Вам здесь. Можно использовать их путем добавления префикса переменной другой знак доллара:
$foo = "Hello, world!";
$bar = "foo";
echo $bar; // outputs "Hello, world!"
Найденный этим на Переменные переменные страница:
function VariableArray($data, $string) {
preg_match_all('/\[([^\]]*)\]/', $string, $arr_matches, PREG_PATTERN_ORDER);
$return = $arr;
foreach($arr_matches[1] as $dimension) { $return = $return[$dimension]; }
return $return;
}