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

从外部javascript文件读取var并将其转换为php变量,javascript,php,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": { "rat

我有一个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代码

我试着读取文件的一部分,一个一个地提取每个变量值,但这显然是不实际的

<?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文件,所以我无法修改它,如果它位于我选择的位置,我将使用数据库。。。但事实并非如此


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

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

{
    "USD": {
        "transfer": 203.49,
        "cash": 90.08,
        "average": 203.49,
    },
.....etc
}
您可以在上面使用
json\u 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;
    }
}
它可以用来创建如下变量:
KEY\u identifier
,意思是
USD\u transfer
…等等

允许您这样调用变量:

echo $USD_transfer;


另外,请注意:


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

这是JSON。使用。这很有趣。为什么要从PHP读取JS文件?无论如何,您可以将其转换为JSON,然后像@johncode建议的那样使用
JSON\u decode()
?不是JSON,而是几乎。在将文件提供给json_decode之前,需要裁剪文件以将其转换为有效的json;var_dump(json_decode($json));var_dump(json_decode($json,true));但我得到一个错误,你的文件是javascript,不是json。Se:比如说。无论如何,这不是一个好的做法,你应该找到一个更普遍的解决办法,你的问题。例如,Javascript和PHP可以轻松读取的内容。谢谢,这正是我需要的,我刚刚添加了:$file=file_get_contents('external.js')$string=str_replace(“var exchange=”,“”,“$file”);一开始,但现在由于一些奇怪的原因,输出只是一个未格式化的数组。你需要
json\u decode()
它,然后按照我在回答中所说的做。谢谢,你的解决方案工作得很好,这是我输入错误的愚蠢错误。他不需要AJAX。该文件已与变量一起存储在他的服务器中。