【问题标题】:PHP - parsing javascript array using a preg_match()PHP - 使用 preg_match() 解析 javascript 数组
【发布时间】:2013-08-20 07:12:32
【问题描述】:

我在解析 HTML 页面时遇到问题。 javascript中有一个变量,我需要获取它并把它转换成json格式。

<script>
  var variable1 = "foo";
  var variable2 = "boo";
  var multipleArray = [
            {"var1":"1",
             "var2": [{
                 "var21":"Extra Lge",
                 "var22":"45923090470",
                 "var23": {"key1":"value1",
                           "key2":"value"}
                 }],
                 ...etc...
             }]
</script>

有什么简单的方法,如何获取 var multipleArray 以及所有的键和值?我用preg_match()

preg_match("'var multipleArray = [\{.*?\}]'", $source, $matches );

但它返回 $matches 作为空数组()。

我做错了什么?我对 reg.ex 的体验。处于 0 级 :(

我会很高兴得到任何帮助 :) 非常感谢 :)

【问题讨论】:

  • 您应该只通过 ajax 以纯 json 格式传递变量,然后在 php 端捕获并使用它。
  • 我不能。因为我正在解析外部网站。

标签: php html-parsing preg-match


【解决方案1】:

使用下面的模式,你应该得到没有 var multipleArray 标识符的数组。

preg_match('/\[(\{(.*)\})\]/', $source, $matches );

现在要获取键值对,您必须对其进行解析。 或者,如果您想获得快速、肮脏和邪恶的胜利,您可以执行以下操作:

您使用 str_replace() 将每个 ':' 替换为 '=>',将 '[{' 替换为 '[','}]' 替换为 ']','{' 替换为 '[','}' 替换为']'。

使用结果字符串 ($result),您可以执行以下操作:

$result_array = null;
eval('$result_array = '.$result);

现在 $result_array 包含你的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2011-11-28
    • 1970-01-01
    • 2013-04-13
    • 2011-04-22
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多