从外部javascript文件中读取var并将其转换为php变量

时间:2015-02-25 23:14:22

标签: javascript php

我有一个位于我服务器某个地方的javascript文件(我们称之为external.js),其中包含以下内容:

var exchange = {
"USD": {
    "transfer": 203.49,
    "cash": 90.08,
    "average": 203.49,
},
"EUR": {
    "transfer": 231.16,
    "cash": 102.32,
    "average": 231.16,
},
"USDCOL": {
    "rate": 2625.00,
    "ratecash": 2350.00,
    "ratetrm": 2500.59,
    "trmfactor": 0.05,
    "trmfactorcash": 0.06
},
"EURUSD": {
    "rate": 1.1359
}
"GOLD": {
    "rate": 1203.95
}}
//this code is simplified there is a lot more values

我想从PHP读取该文件(与外部xml文件类似)并将这些字符串拆分为变量,如下所示:

$USD_transfer = 203.49;
$USD_cash = 90.08;
$USD_average = 203.49;
$EUR_transfer = 231.16;
$EUR_cash = 102.32;
$EUR_average = 231.16.49;
$GOLD_rate = 1203.95;

然后继续执行我的其余PHP代码。

我尝试了file_get_contents,读取文件的一部分,逐个提取每个变量值,但这显然是不切实际的。

<?php
//Read 6 characters starting from the 166 character to get $USD_transfer
$file = file_get_contents('./external.js', NULL, NULL, 166, 6);
$USD_transfer = $file;
?>
PD:因为我正在使用预制(不可更改)的代码生成(仅)该javascript文件我无法修改它,如果我选择我将使用数据库......但事实并非如此

我的编码技巧非常有限,你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

如果从所述变量中删除它并使其成为json文件,即:

{
    "USD": {
        "transfer": 203.49,
        "cash": 90.08,
        "average": 203.49,
    },
.....etc
}

您可以在其上使用json_decode()。你现在拥有它的方式,你必须以某种方式使用ajax将它们发送到处理它的php脚本。如果您正在使用如图所示的精确数据结构,那么您可以根据需要执行以下操作来分配变量。

$json = file_get_contents(getcwd() . '/jsonfile.json');
$data = json_decode($string);
foreach($data as $key => $items) {
    foreach($items as $identifier => $value) {
        ${$key . '_' . $identifier} = $value;
    }
}

利用PHP's variable variables创建如下变量:KEY_identifier,意为USD_transfer ....等等。

允许您这样调用变量:

echo $USD_transfer;

Working Example


另外,快速说明:

您的JSON对象不是有效对象,您可以在JSONLint检查它是否正确。