【发布时间】:2015-04-27 11:39:36
【问题描述】:
我需要从 PHP 中打开一个 JS 文件,在这个文件中找到一个 json var,并将其转换为一个 php 数组。
现在我不知道要使用哪个正则表达式。
// get the js file
$file = file_get_contents ("http://pve.proxmox.com/pve2-api-doc/apidoc.js");
// extract the json content of var pveapi
if ( preg_match ( "#pveapi = ({[^}]*})#", $file, $infoJson ) ) {
$arrJson = json_decode ( $infoJson [1], true );
}
// shows nothing so far :((
print_r($arrJson);
我找到了几个例子来做到这一点,但没有一个对我有用。任何有正则表达式技能的人都可以帮助我吗?
本
编辑:添加了js文件的一部分:
var pveapi = [
{
"info" : {
"GET" : {
"parameters" : {
"additionalProperties" : 0
},
"permissions" : {
"user" : "all"
},
"returns" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {}
},
"links" : [
{
"rel" : "child",
"href" : "{name}"
}
]
},
"name" : "index",
"method" : "GET",
"description" : "Cluster index."
}
}
}
];
Ext.onReady(function() { ... }
【问题讨论】:
-
试试
"#pveapi\s*=\s*({[^}]*})#" -
感谢解答,我试过了,还是一样,不匹配。
-
"/pveapi\s*\=\s*([^Ext\.onReady]*)/"
-
如果您知道您需要的 pveapi 是 var pveapi = 在您的 javascript 中的第一个实例,并且您知道 pveapi 不包含字符串 Ext.onReady ,并且您知道在pveapi,有一个 Ext.onReady ,这应该可以工作......不幸的是,我认为你需要一个成熟的 javascript 解释器来可靠地获取代码
标签: javascript php regex json proxmox