Преобразуйте строку в переменную

18
задан Lightness Races with Monica 25 May 2011 в 11:21
поделиться

4 ответа

Быстрый и грязный:

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"]');
?>
18
ответ дан 30 November 2019 в 05:45
поделиться

PHP's переменные переменные поможет Вам здесь. Можно использовать их путем добавления префикса переменной другой знак доллара:

$foo = "Hello, world!";
$bar = "foo";
echo $bar; // outputs "Hello, world!"
52
ответ дан 30 November 2019 в 05:45
поделиться

Найденный этим на Переменные переменные страница:

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; 
} 
0
ответ дан 30 November 2019 в 05:45
поделиться

Вы получили бы доступ к ним как:

print $string;
0
ответ дан 30 November 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: