2015-09-16 2 views
2

Если предположить, что у меня есть JSon файл выглядит как:добывающие переменные из JSON

{ 
    "query":[ 
     { 
     "pid":"abc" 
     }, 
     { 
     "status":"cde" 
     }, 
     { 
     "uname":"{{user->username}}" 
     }, 
     { 
     "pass":"{{user->password}}" 
     } 
    ] 
} 

Если предположить, что я преобразовать это в массив PHP с помощью json_decode, что это самый простой способ для извлечения значений между {{ как переменные? остальная часть массива - это константы.

Или, может быть, есть инструмент для размещения динамических переменных/Params в файл JSON, и извлекая их легко в PHP ....

Я использую Laravel 5.1 в качестве основы. Целью является конфигурация системы, для настройки соединений API с различными API-интерфейсами (serviceabs.json,serviceefg.json), для извлечения из них разных данных. Теперь эти API имеют разные механизмы аутентификации ... и также я не хочу помещать эти конфиденциальные данные в json-файл, но «вставлять» его ..... тогда, когда данные будут готовы, используйте клиент guzzle для настройки подключение. (после заполнения имени пользователя, пароля ... и т. д.)

так, например, этот массив запросов будет использоваться в качестве запроса GET для клиента guzzle.

+3

Регулярное выражение –

+2

Может быть XY-проблема: почему существует '{{user-> username}}' в документе json в первую очередь? – VolkerK

+0

он будет использоваться для заполнения пользователем, но json предлагает общие настройки внешнего API, с которыми мы соединяемся, используя guzzle. чувствительные данные, которые я хочу заполнить пользователем (на лету), и не помещать в json. – Confidence

ответ

2

Может быть оптимизирован, но попробовать:

$in = "hello {{world}} I am a {{fox}} my name is {{user->username}}"; 
preg_match_all('/\{\{([A-Za-z0-9 ->]+?)\}\}/', $in, $out); 
print_r($out[1]); 

Выходы:

Array ([0] => world [1] => fox [2] => user->username) 

Ваше дело должно быть:

$in = '{{user->username}}'; 
preg_match_all('/\{\{([A-Za-z0-9 ->]+?)\}\}/', $in, $out); 
if(isset($out[1])) { 
    //there are matched within brackets 
    echo $out[1][0]; // will output: user->username 
} 
+0

Это часть части вопроса. OK '$ out [1]' является 'user-> username', а теперь ...? – VolkerK

Смежные вопросы