0

基本的に私の質問は、js ファイル内の変数の値を取得する方法です。

例えば

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」という変数の値だけが必要です。

自分で掘り下げたところ、file_get_contentphpの関数を使用してjsファイルの内容を取得できるようになりました。変数を取得してその値を取得する方法がわかりません。

4

3 に答える 3

1

「other_var =」を調べて、その後に何が来るかを確認してください...でファイルを取得します

$content = file_get_contents(...);
于 2012-06-08T10:10:29.857 に答える
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;
于 2012-06-08T10:24:23.013 に答える
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";
  }

そんな感じ?引用符を探すときに文字列値のみを見つけることに注意してください。構文的に無効な Javascript であるいくつかのものと一致させることができるさまざまな穴があり、文字列にエスケープされた引用符があると失敗しますが、 JS が有効である限り、varキーワードの有無にかかわらず、名前付き変数に文字列値が割り当てられているファイル内の最初の場所を見つける必要があります。

編集

構文的に有効な Javascript 文字列のみに一致し、引用符がエスケープされたものを含む有効な単一文字列に一致する必要がある、はるかに優れたバージョンですが、それでも連結式は処理されません。また、Javascript にロードされたときの文字列の実際の値も取得します。つまり、ここで定義されているエスケープ シーケンスを補間します。

于 2012-06-08T10:17:45.910 に答える