如何从js文件中检索值?

时间:2012-06-08 09:42:24

标签: php javascript

基本上我的问题是如何在js文件中获取变量的值。

E.g

var now = (new Date() - 0);

other_var = 'Whats up';//how to pull the value of the other_var which is 'Whats Up'

key.embed();

如何使用php获取other_var的值?我只需要变量的值'whats up'。

自己做了一些挖掘,现在我能够在php中使用file_get_content函数获取js文件的内容,只是不知道如何获取变量并拉取其值。

3 个答案:

答案 0 :(得分:1)

只需查看“other_var =”,然后查看其后的内容......使用

获取文件
$content = file_get_contents(...);

答案 1 :(得分:1)

<?php

  $file = file_get_contents('myfile.js');

  $varNameToFind = 'other_var';

  $expr = '/^\s*(?:var)?\s*'.$varNameToFind.'\s*=\s*([\'"])(.*?)\1\s*;?/m';

  if (preg_match($expr, $file, $matches)) {
    echo "I found it: $matches[2]";
  } else {
    echo "I couldn't find it";
  }

Example

那样的东西?请注意,它只会在查找引号时找到字符串值,并且在其中有各种漏洞,允许它匹配语法无效Javascript的一些内容,并且当字符串中存在转义引号时它将会失效 - 但是只要JS有效,就应该找到文件中的第一个位置,其中字符串值分配给命名变量,有或没有var关键字。

修改

A much better version只匹配语法上有效的Javascript字符串,并且应匹配任何有效的单个字符串,包括带有转义引号的字符串,尽管它仍然不会处理串联表达式。它还获取字符串的实际值,就像加载到Javascript时一样 - 即它按照定义here插入转义序列。

答案 2 :(得分:1)

如果我假设文件内容与您所描述的一样:

    var now = (new Date() - 0);

other_var = 'Whats up';//how to pull the value of the other_var which is 'Whats Up'

key.embed();

然后我建议您使用以下内容:

    $data = file_get_contents("javascriptfile.js"); //read the file
//create array separate by new line
//this is the part where you need to know how to navigate the file contents 
//if your lucky enough, it may be structured statement-by-statement on each
$contents = explode("\n", $data); 
$interestvar = "other_var";
$interestvalue = "";
foreach ($contents as $linevalue)  
{
    //what we are looking for is :: other_var = 'Whats up';
    //so if "other_var" can be found in a line, then get its value from right side of the "=" sign
    //mind you it could be in any of the formats 'other_var=xxxxxx', 'other_var= xxxxxx', 'other_var =xxxxxx', 'other_var = xxxxxx', 
    if(strpos($linevalue,$interestvar." =")!==false){
        //cut from '=' to ';'
        //print strpos($linevalue,";");
        $start = strpos($linevalue,"=");
        $end = strpos($linevalue,";");
        //print "start ".$start ." end: ".$end;
        $interestvalue = substr($linevalue,$start,$end-$start);
        //print $interestvalue;
        break;
    }
}
if($interestvalue!=="")
print "found: ".$interestvar. " of value : ".$interestvalue;