【问题标题】:Parsing javascript variable from source code从源代码解析 javascript 变量
【发布时间】:2014-07-13 15:24:50
【问题描述】:

我需要解析一些 javascript 变量,以便更新到 SQL 数据库中。

1) 我将如何直接从源代码中解析这些行,例如:

//our variables
var y = "bloblo";
var x = "blabla";
var z = "bleble";

(上面的这个块将在页面的源代码中的某个地方,我的目标是检索它,并将其存储在一些 php 变量中) 最合适的方法是什么?

2) 有没有办法直接访问网站的源代码以使用此解析器并检索/保存数据?

【问题讨论】:

  • 可以在随机网页源上使用回调函数吗?

标签: javascript php sql


【解决方案1】:

此函数对 JS 源进行基本解析以查找变量定义:

function parse_js_vars($source) {
    $res = array();
    $matches = array();
    $rx = "/(?:var)?\s+([\$A-Za-z_][$\w]*)\s*=\s*['\"]?([^'\";]*)[\"']?\s*(?:^|;)/";
    preg_match_all($rx, $source, $matches);
    foreach ($matches[1] as $n => $name) {
        $res[$name] = $matches[2][$n];
    }
    return $res;
}

例子:

parse_js_vars("var a=5;var b='hello';");

返回

array(
  "a" => "5"
  "b" => "hello"
)

【讨论】:

  • 什么是“[$\w]*”?我不明白。无论如何,感谢您的正则表达式。
  • [$\w] 匹配所有字母、数字、下划线和 $ 字符。这是为了匹配可以成为变量名一部分的每个字符(但不是第一个字符,不能是数字)。
  • 不是已经由“[\$A-Za-z_]”完成了吗?另外,快捷方式'\w'不应该在类定义“[]”之外
【解决方案2】:

使用jQuery执行AJAX调用,例如:

$.ajax({
  type: "POST",
  url: "example.php",
  data: { y: y, x: x, z: z }
})
  .done(function( msg ) {
    // Perform changes on your page after AJAX request succeed.
    alert( "Data Saved: " + msg );
  });

你的PHP服务器部分,就可以解析了:

$y = filter_input(INPUT_POST, 'y');
$x = filter_input(INPUT_POST, 'x');
$z = filter_input(INPUT_POST, 'z');

【讨论】:

  • 我实际上是在寻找避免这种情况,因为 ajax 不是跨域的,我需要的是从我不拥有的站点的源中获取数据。
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2019-06-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多